diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2017-04-19 11:12:26 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2017-05-03 07:59:35 +0000 |
commit | 35b9bb679bde1ed34517d4abdd04c4335acd6013 (patch) | |
tree | 396d00be1af5370f7d113faa6564f7942c59fa29 | |
parent | e79b197c3e3a11e54e287b5dac95c0ca3bdf3f87 (diff) |
bug-2185: New test.ok-for-regtest-with-gcc-linaro-6.2-2016.11
Change-Id: I0bb21cf05d79576a8ca25f53db3570d0d3d5428c
-rw-r--r-- | bug-2185/Makefile | 1 | ||||
-rwxr-xr-x | bug-2185/build.sh | 18 | ||||
-rw-r--r-- | bug-2185/preprocessed.cpp | 80324 |
3 files changed, 80343 insertions, 0 deletions
diff --git a/bug-2185/Makefile b/bug-2185/Makefile new file mode 100644 index 0000000..23f8a8f --- /dev/null +++ b/bug-2185/Makefile @@ -0,0 +1 @@ +include ../common.mk diff --git a/bug-2185/build.sh b/bug-2185/build.sh new file mode 100755 index 0000000..c7fac20 --- /dev/null +++ b/bug-2185/build.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +case ${TARGET} in + aarch64*) + CXXFLAGS="-march=armv8-a -mtune=cortex-a53 -pthread -O3 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -Wvla -Wdate-time -fPIC" + ;; + *) + echo "$(basename $(pwd)): SKIP" > result.txt + exit 0 + ;; +esac + +echo "$(basename $(pwd)): FAIL" > result.txt +set -x +${CXX} -c -o /dev/null preprocessed.cpp ${CXXFLAGS} +set +x +echo "$(basename $(pwd)): PASS" > result.txt diff --git a/bug-2185/preprocessed.cpp b/bug-2185/preprocessed.cpp new file mode 100644 index 0000000..100589c --- /dev/null +++ b/bug-2185/preprocessed.cpp @@ -0,0 +1,80324 @@ +# 1 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +# 1 "<built-in>" +# 1 "<command-line>" +# 1 "/mnt/odroid-c2/usr/include/stdc-predef.h" 1 3 4 +# 1 "<command-line>" 2 +# 1 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +# 40 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +# 1 "../../include/QtCore/qjsonobject.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonobject.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonobject.h" +# 1 "../../include/QtCore/qjsonvalue.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonvalue.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonvalue.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstddef" 1 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstddef" 3 + +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstddef" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 1 3 +# 194 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 3 + +# 194 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 3 +namespace std +{ + typedef long unsigned int size_t; + typedef long int ptrdiff_t; + + + typedef decltype(nullptr) nullptr_t; + +} +# 216 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 3 +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# 482 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/os_defines.h" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/os_defines.h" 3 +# 1 "/mnt/odroid-c2/usr/include/features.h" 1 3 4 +# 367 "/mnt/odroid-c2/usr/include/features.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4 +# 410 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 +# 411 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 +# 368 "/mnt/odroid-c2/usr/include/features.h" 2 3 4 +# 391 "/mnt/odroid-c2/usr/include/features.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4 + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 +# 6 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4 +# 9 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 +# 392 "/mnt/odroid-c2/usr/include/features.h" 2 3 4 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/os_defines.h" 2 3 +# 483 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 2 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/cpu_defines.h" 1 3 +# 486 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++config.h" 2 3 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstddef" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 3 4 +typedef long int ptrdiff_t; +# 216 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 3 4 +typedef long unsigned int size_t; +# 426 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 3 4 +typedef struct { + long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); + long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); +} max_align_t; + + + + + + + typedef decltype(nullptr) nullptr_t; +# 46 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstddef" 2 3 + + +namespace std +{ + + using ::max_align_t; +} +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 60 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +# 1 "../../include/QtCore/qconfig.h" 1 +# 1 "../../include/QtCore/../../src/corelib/global/qconfig.h" 1 +# 1 "../../include/QtCore/qconfig.h" 2 +# 61 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qfeatures.h" 1 +# 1 "../../include/QtCore/../../src/corelib/global/qfeatures.h" 1 +# 1 "../../include/QtCore/qfeatures.h" 2 +# 62 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 78 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +# 1 "../../include/QtCore/qsystemdetection.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qsystemdetection.h" 1 +# 1 "../../include/QtCore/qsystemdetection.h" 2 +# 79 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qprocessordetection.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qprocessordetection.h" 1 +# 1 "../../include/QtCore/qprocessordetection.h" 2 +# 80 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qcompilerdetection.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qcompilerdetection.h" 1 +# 985 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qcompilerdetection.h" +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 3 +# 69 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 1 3 +# 67 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + namespace rel_ops + { + +# 85 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 3 + template <class _Tp> + inline bool + operator!=(const _Tp& __x, const _Tp& __y) + { return !(__x == __y); } +# 98 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 3 + template <class _Tp> + inline bool + operator>(const _Tp& __x, const _Tp& __y) + { return __y < __x; } +# 111 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 3 + template <class _Tp> + inline bool + operator<=(const _Tp& __x, const _Tp& __y) + { return !(__y < __x); } +# 124 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_relops.h" 3 + template <class _Tp> + inline bool + operator>=(const _Tp& __x, const _Tp& __y) + { return !(__x < __y); } + + + } + +} +# 70 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/concept_check.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/concept_check.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/concept_check.h" 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<typename _Tp> + inline _Tp* + __addressof(_Tp& __r) noexcept + { + return reinterpret_cast<_Tp*> + (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r))); + } + + +} + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 +namespace std +{ + typedef short unsigned int uint_least16_t; + typedef unsigned int uint_least32_t; +} + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 68 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<typename _Tp, _Tp __v> + struct integral_constant + { + static constexpr _Tp value = __v; + typedef _Tp value_type; + typedef integral_constant<_Tp, __v> type; + constexpr operator value_type() const { return value; } + + + + + constexpr value_type operator()() const { return value; } + + }; + + template<typename _Tp, _Tp __v> + constexpr _Tp integral_constant<_Tp, __v>::value; + + + typedef integral_constant<bool, true> true_type; + + + typedef integral_constant<bool, false> false_type; + + template<bool __v> + using __bool_constant = integral_constant<bool, __v>; + + + + template<bool, typename, typename> + struct conditional; + + template<typename...> + struct __or_; + + template<> + struct __or_<> + : public false_type + { }; + + template<typename _B1> + struct __or_<_B1> + : public _B1 + { }; + + template<typename _B1, typename _B2> + struct __or_<_B1, _B2> + : public conditional<_B1::value, _B1, _B2>::type + { }; + + template<typename _B1, typename _B2, typename _B3, typename... _Bn> + struct __or_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type + { }; + + template<typename...> + struct __and_; + + template<> + struct __and_<> + : public true_type + { }; + + template<typename _B1> + struct __and_<_B1> + : public _B1 + { }; + + template<typename _B1, typename _B2> + struct __and_<_B1, _B2> + : public conditional<_B1::value, _B2, _B1>::type + { }; + + template<typename _B1, typename _B2, typename _B3, typename... _Bn> + struct __and_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type + { }; + + template<typename _Pp> + struct __not_ + : public integral_constant<bool, !_Pp::value> + { }; + + + + + + + template<typename _Tp> + struct __success_type + { typedef _Tp type; }; + + struct __failure_type + { }; + + + + template<typename> + struct remove_cv; + + template<typename> + struct __is_void_helper + : public false_type { }; + + template<> + struct __is_void_helper<void> + : public true_type { }; + + + template<typename _Tp> + struct is_void + : public __is_void_helper<typename remove_cv<_Tp>::type>::type + { }; + + template<typename> + struct __is_integral_helper + : public false_type { }; + + template<> + struct __is_integral_helper<bool> + : public true_type { }; + + template<> + struct __is_integral_helper<char> + : public true_type { }; + + template<> + struct __is_integral_helper<signed char> + : public true_type { }; + + template<> + struct __is_integral_helper<unsigned char> + : public true_type { }; + + + template<> + struct __is_integral_helper<wchar_t> + : public true_type { }; + + + template<> + struct __is_integral_helper<char16_t> + : public true_type { }; + + template<> + struct __is_integral_helper<char32_t> + : public true_type { }; + + template<> + struct __is_integral_helper<short> + : public true_type { }; + + template<> + struct __is_integral_helper<unsigned short> + : public true_type { }; + + template<> + struct __is_integral_helper<int> + : public true_type { }; + + template<> + struct __is_integral_helper<unsigned int> + : public true_type { }; + + template<> + struct __is_integral_helper<long> + : public true_type { }; + + template<> + struct __is_integral_helper<unsigned long> + : public true_type { }; + + template<> + struct __is_integral_helper<long long> + : public true_type { }; + + template<> + struct __is_integral_helper<unsigned long long> + : public true_type { }; +# 288 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<typename _Tp> + struct is_integral + : public __is_integral_helper<typename remove_cv<_Tp>::type>::type + { }; + + template<typename> + struct __is_floating_point_helper + : public false_type { }; + + template<> + struct __is_floating_point_helper<float> + : public true_type { }; + + template<> + struct __is_floating_point_helper<double> + : public true_type { }; + + template<> + struct __is_floating_point_helper<long double> + : public true_type { }; +# 316 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<typename _Tp> + struct is_floating_point + : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type + { }; + + + template<typename> + struct is_array + : public false_type { }; + + template<typename _Tp, std::size_t _Size> + struct is_array<_Tp[_Size]> + : public true_type { }; + + template<typename _Tp> + struct is_array<_Tp[]> + : public true_type { }; + + template<typename> + struct __is_pointer_helper + : public false_type { }; + + template<typename _Tp> + struct __is_pointer_helper<_Tp*> + : public true_type { }; + + + template<typename _Tp> + struct is_pointer + : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type + { }; + + + template<typename> + struct is_lvalue_reference + : public false_type { }; + + template<typename _Tp> + struct is_lvalue_reference<_Tp&> + : public true_type { }; + + + template<typename> + struct is_rvalue_reference + : public false_type { }; + + template<typename _Tp> + struct is_rvalue_reference<_Tp&&> + : public true_type { }; + + template<typename> + struct is_function; + + template<typename> + struct __is_member_object_pointer_helper + : public false_type { }; + + template<typename _Tp, typename _Cp> + struct __is_member_object_pointer_helper<_Tp _Cp::*> + : public integral_constant<bool, !is_function<_Tp>::value> { }; + + + template<typename _Tp> + struct is_member_object_pointer + : public __is_member_object_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + template<typename> + struct __is_member_function_pointer_helper + : public false_type { }; + + template<typename _Tp, typename _Cp> + struct __is_member_function_pointer_helper<_Tp _Cp::*> + : public integral_constant<bool, is_function<_Tp>::value> { }; + + + template<typename _Tp> + struct is_member_function_pointer + : public __is_member_function_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + + template<typename _Tp> + struct is_enum + : public integral_constant<bool, __is_enum(_Tp)> + { }; + + + template<typename _Tp> + struct is_union + : public integral_constant<bool, __is_union(_Tp)> + { }; + + + template<typename _Tp> + struct is_class + : public integral_constant<bool, __is_class(_Tp)> + { }; + + + template<typename> + struct is_function + : public false_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...)> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......)> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) volatile> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) volatile &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) volatile &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) volatile> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) volatile &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) volatile &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const volatile> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const volatile &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes...) const volatile &&> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const volatile> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const volatile &> + : public true_type { }; + + template<typename _Res, typename... _ArgTypes> + struct is_function<_Res(_ArgTypes......) const volatile &&> + : public true_type { }; + + + + template<typename> + struct __is_null_pointer_helper + : public false_type { }; + + template<> + struct __is_null_pointer_helper<std::nullptr_t> + : public true_type { }; + + + template<typename _Tp> + struct is_null_pointer + : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type + { }; + + + template<typename _Tp> + struct __is_nullptr_t + : public is_null_pointer<_Tp> + { }; + + + + + template<typename _Tp> + struct is_reference + : public __or_<is_lvalue_reference<_Tp>, + is_rvalue_reference<_Tp>>::type + { }; + + + template<typename _Tp> + struct is_arithmetic + : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type + { }; + + + template<typename _Tp> + struct is_fundamental + : public __or_<is_arithmetic<_Tp>, is_void<_Tp>, + is_null_pointer<_Tp>>::type + { }; + + + template<typename _Tp> + struct is_object + : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>, + is_void<_Tp>>>::type + { }; + + template<typename> + struct is_member_pointer; + + + template<typename _Tp> + struct is_scalar + : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>, + is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type + { }; + + + template<typename _Tp> + struct is_compound + : public integral_constant<bool, !is_fundamental<_Tp>::value> { }; + + template<typename _Tp> + struct __is_member_pointer_helper + : public false_type { }; + + template<typename _Tp, typename _Cp> + struct __is_member_pointer_helper<_Tp _Cp::*> + : public true_type { }; + + + template<typename _Tp> + struct is_member_pointer + : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type + { }; + + + + template<typename _Tp> + struct __is_referenceable + : public __or_<is_object<_Tp>, is_reference<_Tp>>::type + { }; + + template<typename _Res, typename... _Args> + struct __is_referenceable<_Res(_Args...)> + : public true_type + { }; + + template<typename _Res, typename... _Args> + struct __is_referenceable<_Res(_Args......)> + : public true_type + { }; + + + + + template<typename> + struct is_const + : public false_type { }; + + template<typename _Tp> + struct is_const<_Tp const> + : public true_type { }; + + + template<typename> + struct is_volatile + : public false_type { }; + + template<typename _Tp> + struct is_volatile<_Tp volatile> + : public true_type { }; + + + template<typename _Tp> + struct is_trivial + : public integral_constant<bool, __is_trivial(_Tp)> + { }; + + + template<typename _Tp> + struct is_trivially_copyable + : public integral_constant<bool, __is_trivially_copyable(_Tp)> + { }; + + + template<typename _Tp> + struct is_standard_layout + : public integral_constant<bool, __is_standard_layout(_Tp)> + { }; + + + + template<typename _Tp> + struct is_pod + : public integral_constant<bool, __is_pod(_Tp)> + { }; + + + template<typename _Tp> + struct is_literal_type + : public integral_constant<bool, __is_literal_type(_Tp)> + { }; + + + template<typename _Tp> + struct is_empty + : public integral_constant<bool, __is_empty(_Tp)> + { }; + + + template<typename _Tp> + struct is_polymorphic + : public integral_constant<bool, __is_polymorphic(_Tp)> + { }; + + + + + template<typename _Tp> + struct is_final + : public integral_constant<bool, __is_final(_Tp)> + { }; + + + + template<typename _Tp> + struct is_abstract + : public integral_constant<bool, __is_abstract(_Tp)> + { }; + + template<typename _Tp, + bool = is_arithmetic<_Tp>::value> + struct __is_signed_helper + : public false_type { }; + + template<typename _Tp> + struct __is_signed_helper<_Tp, true> + : public integral_constant<bool, _Tp(-1) < _Tp(0)> + { }; + + + template<typename _Tp> + struct is_signed + : public __is_signed_helper<_Tp>::type + { }; + + + template<typename _Tp> + struct is_unsigned + : public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>>::type + { }; + + + + + template<typename> + struct add_rvalue_reference; + + + + + + template<typename _Tp> + typename add_rvalue_reference<_Tp>::type declval() noexcept; + + template<typename, unsigned = 0> + struct extent; + + template<typename> + struct remove_all_extents; + + template<typename _Tp> + struct __is_array_known_bounds + : public integral_constant<bool, (extent<_Tp>::value > 0)> + { }; + + template<typename _Tp> + struct __is_array_unknown_bounds + : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>::type + { }; + + + + + + + struct __do_is_destructible_impl + { + template<typename _Tp, typename = decltype(declval<_Tp&>().~_Tp())> + static true_type __test(int); + + template<typename> + static false_type __test(...); + }; + + template<typename _Tp> + struct __is_destructible_impl + : public __do_is_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template<typename _Tp, + bool = __or_<is_void<_Tp>, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value> + struct __is_destructible_safe; + + template<typename _Tp> + struct __is_destructible_safe<_Tp, false, false> + : public __is_destructible_impl<typename + remove_all_extents<_Tp>::type>::type + { }; + + template<typename _Tp> + struct __is_destructible_safe<_Tp, true, false> + : public false_type { }; + + template<typename _Tp> + struct __is_destructible_safe<_Tp, false, true> + : public true_type { }; + + + template<typename _Tp> + struct is_destructible + : public __is_destructible_safe<_Tp>::type + { }; + + + + + + struct __do_is_nt_destructible_impl + { + template<typename _Tp> + static integral_constant<bool, noexcept(declval<_Tp&>().~_Tp())> + __test(int); + + template<typename> + static false_type __test(...); + }; + + template<typename _Tp> + struct __is_nt_destructible_impl + : public __do_is_nt_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template<typename _Tp, + bool = __or_<is_void<_Tp>, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value> + struct __is_nt_destructible_safe; + + template<typename _Tp> + struct __is_nt_destructible_safe<_Tp, false, false> + : public __is_nt_destructible_impl<typename + remove_all_extents<_Tp>::type>::type + { }; + + template<typename _Tp> + struct __is_nt_destructible_safe<_Tp, true, false> + : public false_type { }; + + template<typename _Tp> + struct __is_nt_destructible_safe<_Tp, false, true> + : public true_type { }; + + + template<typename _Tp> + struct is_nothrow_destructible + : public __is_nt_destructible_safe<_Tp>::type + { }; + + struct __do_is_default_constructible_impl + { + template<typename _Tp, typename = decltype(_Tp())> + static true_type __test(int); + + template<typename> + static false_type __test(...); + }; + + template<typename _Tp> + struct __is_default_constructible_impl + : public __do_is_default_constructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template<typename _Tp> + struct __is_default_constructible_atom + : public __and_<__not_<is_void<_Tp>>, + __is_default_constructible_impl<_Tp>>::type + { }; + + template<typename _Tp, bool = is_array<_Tp>::value> + struct __is_default_constructible_safe; + + + + + + + template<typename _Tp> + struct __is_default_constructible_safe<_Tp, true> + : public __and_<__is_array_known_bounds<_Tp>, + __is_default_constructible_atom<typename + remove_all_extents<_Tp>::type>>::type + { }; + + template<typename _Tp> + struct __is_default_constructible_safe<_Tp, false> + : public __is_default_constructible_atom<_Tp>::type + { }; + + + template<typename _Tp> + struct is_default_constructible + : public __is_default_constructible_safe<_Tp>::type + { }; +# 900 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + struct __do_is_static_castable_impl + { + template<typename _From, typename _To, typename + = decltype(static_cast<_To>(declval<_From>()))> + static true_type __test(int); + + template<typename, typename> + static false_type __test(...); + }; + + template<typename _From, typename _To> + struct __is_static_castable_impl + : public __do_is_static_castable_impl + { + typedef decltype(__test<_From, _To>(0)) type; + }; + + template<typename _From, typename _To> + struct __is_static_castable_safe + : public __is_static_castable_impl<_From, _To>::type + { }; + + + template<typename _From, typename _To> + struct __is_static_castable + : public integral_constant<bool, (__is_static_castable_safe< + _From, _To>::value)> + { }; + + + + + + + struct __do_is_direct_constructible_impl + { + template<typename _Tp, typename _Arg, typename + = decltype(::new _Tp(declval<_Arg>()))> + static true_type __test(int); + + template<typename, typename> + static false_type __test(...); + }; + + template<typename _Tp, typename _Arg> + struct __is_direct_constructible_impl + : public __do_is_direct_constructible_impl + { + typedef decltype(__test<_Tp, _Arg>(0)) type; + }; + + template<typename _Tp, typename _Arg> + struct __is_direct_constructible_new_safe + : public __and_<is_destructible<_Tp>, + __is_direct_constructible_impl<_Tp, _Arg>>::type + { }; + + template<typename, typename> + struct is_same; + + template<typename, typename> + struct is_base_of; + + template<typename> + struct remove_reference; + + template<typename _From, typename _To, bool + = __not_<__or_<is_void<_From>, + is_function<_From>>>::value> + struct __is_base_to_derived_ref; + + + + template<typename _From, typename _To> + struct __is_base_to_derived_ref<_From, _To, true> + { + typedef typename remove_cv<typename remove_reference<_From + >::type>::type __src_t; + typedef typename remove_cv<typename remove_reference<_To + >::type>::type __dst_t; + typedef __and_<__not_<is_same<__src_t, __dst_t>>, + is_base_of<__src_t, __dst_t>> type; + static constexpr bool value = type::value; + }; + + template<typename _From, typename _To> + struct __is_base_to_derived_ref<_From, _To, false> + : public false_type + { }; + + template<typename _From, typename _To, bool + = __and_<is_lvalue_reference<_From>, + is_rvalue_reference<_To>>::value> + struct __is_lvalue_to_rvalue_ref; + + + + template<typename _From, typename _To> + struct __is_lvalue_to_rvalue_ref<_From, _To, true> + { + typedef typename remove_cv<typename remove_reference< + _From>::type>::type __src_t; + typedef typename remove_cv<typename remove_reference< + _To>::type>::type __dst_t; + typedef __and_<__not_<is_function<__src_t>>, + __or_<is_same<__src_t, __dst_t>, + is_base_of<__dst_t, __src_t>>> type; + static constexpr bool value = type::value; + }; + + template<typename _From, typename _To> + struct __is_lvalue_to_rvalue_ref<_From, _To, false> + : public false_type + { }; + + + + + + + + template<typename _Tp, typename _Arg> + struct __is_direct_constructible_ref_cast + : public __and_<__is_static_castable<_Arg, _Tp>, + __not_<__or_<__is_base_to_derived_ref<_Arg, _Tp>, + __is_lvalue_to_rvalue_ref<_Arg, _Tp> + >>>::type + { }; + + template<typename _Tp, typename _Arg> + struct __is_direct_constructible_new + : public conditional<is_reference<_Tp>::value, + __is_direct_constructible_ref_cast<_Tp, _Arg>, + __is_direct_constructible_new_safe<_Tp, _Arg> + >::type + { }; + + template<typename _Tp, typename _Arg> + struct __is_direct_constructible + : public __is_direct_constructible_new<_Tp, _Arg>::type + { }; + + + + + + + struct __do_is_nary_constructible_impl + { + template<typename _Tp, typename... _Args, typename + = decltype(_Tp(declval<_Args>()...))> + static true_type __test(int); + + template<typename, typename...> + static false_type __test(...); + }; + + template<typename _Tp, typename... _Args> + struct __is_nary_constructible_impl + : public __do_is_nary_constructible_impl + { + typedef decltype(__test<_Tp, _Args...>(0)) type; + }; + + template<typename _Tp, typename... _Args> + struct __is_nary_constructible + : public __is_nary_constructible_impl<_Tp, _Args...>::type + { + static_assert(sizeof...(_Args) > 1, + "Only useful for > 1 arguments"); + }; + + template<typename _Tp, typename... _Args> + struct __is_constructible_impl + : public __is_nary_constructible<_Tp, _Args...> + { }; + + template<typename _Tp, typename _Arg> + struct __is_constructible_impl<_Tp, _Arg> + : public __is_direct_constructible<_Tp, _Arg> + { }; + + template<typename _Tp> + struct __is_constructible_impl<_Tp> + : public is_default_constructible<_Tp> + { }; + + + template<typename _Tp, typename... _Args> + struct is_constructible + : public __is_constructible_impl<_Tp, _Args...>::type + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_copy_constructible_impl; + + template<typename _Tp> + struct __is_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_copy_constructible_impl<_Tp, true> + : public is_constructible<_Tp, const _Tp&> + { }; + + + template<typename _Tp> + struct is_copy_constructible + : public __is_copy_constructible_impl<_Tp> + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_move_constructible_impl; + + template<typename _Tp> + struct __is_move_constructible_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_move_constructible_impl<_Tp, true> + : public is_constructible<_Tp, _Tp&&> + { }; + + + template<typename _Tp> + struct is_move_constructible + : public __is_move_constructible_impl<_Tp> + { }; + + template<typename _Tp> + struct __is_nt_default_constructible_atom + : public integral_constant<bool, noexcept(_Tp())> + { }; + + template<typename _Tp, bool = is_array<_Tp>::value> + struct __is_nt_default_constructible_impl; + + template<typename _Tp> + struct __is_nt_default_constructible_impl<_Tp, true> + : public __and_<__is_array_known_bounds<_Tp>, + __is_nt_default_constructible_atom<typename + remove_all_extents<_Tp>::type>>::type + { }; + + template<typename _Tp> + struct __is_nt_default_constructible_impl<_Tp, false> + : public __is_nt_default_constructible_atom<_Tp> + { }; + + + template<typename _Tp> + struct is_nothrow_default_constructible + : public __and_<is_default_constructible<_Tp>, + __is_nt_default_constructible_impl<_Tp>>::type + { }; + + template<typename _Tp, typename... _Args> + struct __is_nt_constructible_impl + : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> + { }; + + template<typename _Tp, typename _Arg> + struct __is_nt_constructible_impl<_Tp, _Arg> + : public integral_constant<bool, + noexcept(static_cast<_Tp>(declval<_Arg>()))> + { }; + + template<typename _Tp> + struct __is_nt_constructible_impl<_Tp> + : public is_nothrow_default_constructible<_Tp> + { }; + + + template<typename _Tp, typename... _Args> + struct is_nothrow_constructible + : public __and_<is_constructible<_Tp, _Args...>, + __is_nt_constructible_impl<_Tp, _Args...>>::type + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_nothrow_copy_constructible_impl; + + template<typename _Tp> + struct __is_nothrow_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_nothrow_copy_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, const _Tp&> + { }; + + + template<typename _Tp> + struct is_nothrow_copy_constructible + : public __is_nothrow_copy_constructible_impl<_Tp> + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_nothrow_move_constructible_impl; + + template<typename _Tp> + struct __is_nothrow_move_constructible_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_nothrow_move_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, _Tp&&> + { }; + + + template<typename _Tp> + struct is_nothrow_move_constructible + : public __is_nothrow_move_constructible_impl<_Tp> + { }; + + template<typename _Tp, typename _Up> + class __is_assignable_helper + { + template<typename _Tp1, typename _Up1, + typename = decltype(declval<_Tp1>() = declval<_Up1>())> + static true_type + __test(int); + + template<typename, typename> + static false_type + __test(...); + + public: + typedef decltype(__test<_Tp, _Up>(0)) type; + }; + + + template<typename _Tp, typename _Up> + struct is_assignable + : public __is_assignable_helper<_Tp, _Up>::type + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_copy_assignable_impl; + + template<typename _Tp> + struct __is_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_copy_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, const _Tp&> + { }; + + + template<typename _Tp> + struct is_copy_assignable + : public __is_copy_assignable_impl<_Tp> + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_move_assignable_impl; + + template<typename _Tp> + struct __is_move_assignable_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_move_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, _Tp&&> + { }; + + + template<typename _Tp> + struct is_move_assignable + : public __is_move_assignable_impl<_Tp> + { }; + + template<typename _Tp, typename _Up> + struct __is_nt_assignable_impl + : public integral_constant<bool, noexcept(declval<_Tp>() = declval<_Up>())> + { }; + + + template<typename _Tp, typename _Up> + struct is_nothrow_assignable + : public __and_<is_assignable<_Tp, _Up>, + __is_nt_assignable_impl<_Tp, _Up>>::type + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_nt_copy_assignable_impl; + + template<typename _Tp> + struct __is_nt_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_nt_copy_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, const _Tp&> + { }; + + + template<typename _Tp> + struct is_nothrow_copy_assignable + : public __is_nt_copy_assignable_impl<_Tp> + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __is_nt_move_assignable_impl; + + template<typename _Tp> + struct __is_nt_move_assignable_impl<_Tp, false> + : public false_type { }; + + template<typename _Tp> + struct __is_nt_move_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, _Tp&&> + { }; + + + template<typename _Tp> + struct is_nothrow_move_assignable + : public __is_nt_move_assignable_impl<_Tp> + { }; + + + template<typename _Tp, typename... _Args> + struct is_trivially_constructible + : public __and_<is_constructible<_Tp, _Args...>, integral_constant<bool, + __is_trivially_constructible(_Tp, _Args...)>>::type + { }; + + + template<typename _Tp> + struct is_trivially_default_constructible + : public is_trivially_constructible<_Tp>::type + { }; + + + template<typename _Tp> + struct is_trivially_copy_constructible + : public __and_<is_copy_constructible<_Tp>, + integral_constant<bool, + __is_trivially_constructible(_Tp, const _Tp&)>>::type + { }; + + + template<typename _Tp> + struct is_trivially_move_constructible + : public __and_<is_move_constructible<_Tp>, + integral_constant<bool, + __is_trivially_constructible(_Tp, _Tp&&)>>::type + { }; + + + template<typename _Tp, typename _Up> + struct is_trivially_assignable + : public __and_<is_assignable<_Tp, _Up>, + integral_constant<bool, + __is_trivially_assignable(_Tp, _Up)>>::type + { }; + + + template<typename _Tp> + struct is_trivially_copy_assignable + : public __and_<is_copy_assignable<_Tp>, + integral_constant<bool, + __is_trivially_assignable(_Tp&, const _Tp&)>>::type + { }; + + + template<typename _Tp> + struct is_trivially_move_assignable + : public __and_<is_move_assignable<_Tp>, + integral_constant<bool, + __is_trivially_assignable(_Tp&, _Tp&&)>>::type + { }; + + + template<typename _Tp> + struct is_trivially_destructible + : public __and_<is_destructible<_Tp>, integral_constant<bool, + __has_trivial_destructor(_Tp)>>::type + { }; + + + template<typename _Tp> + struct has_trivial_default_constructor + : public integral_constant<bool, __has_trivial_constructor(_Tp)> + { } __attribute__ ((__deprecated__)); + + + template<typename _Tp> + struct has_trivial_copy_constructor + : public integral_constant<bool, __has_trivial_copy(_Tp)> + { } __attribute__ ((__deprecated__)); + + + template<typename _Tp> + struct has_trivial_copy_assign + : public integral_constant<bool, __has_trivial_assign(_Tp)> + { } __attribute__ ((__deprecated__)); + + + template<typename _Tp> + struct has_virtual_destructor + : public integral_constant<bool, __has_virtual_destructor(_Tp)> + { }; + + + + + + template<typename _Tp> + struct alignment_of + : public integral_constant<std::size_t, __alignof__(_Tp)> { }; + + + template<typename> + struct rank + : public integral_constant<std::size_t, 0> { }; + + template<typename _Tp, std::size_t _Size> + struct rank<_Tp[_Size]> + : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { }; + + template<typename _Tp> + struct rank<_Tp[]> + : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { }; + + + template<typename, unsigned _Uint> + struct extent + : public integral_constant<std::size_t, 0> { }; + + template<typename _Tp, unsigned _Uint, std::size_t _Size> + struct extent<_Tp[_Size], _Uint> + : public integral_constant<std::size_t, + _Uint == 0 ? _Size : extent<_Tp, + _Uint - 1>::value> + { }; + + template<typename _Tp, unsigned _Uint> + struct extent<_Tp[], _Uint> + : public integral_constant<std::size_t, + _Uint == 0 ? 0 : extent<_Tp, + _Uint - 1>::value> + { }; + + + + + + template<typename, typename> + struct is_same + : public false_type { }; + + template<typename _Tp> + struct is_same<_Tp, _Tp> + : public true_type { }; + + + template<typename _Base, typename _Derived> + struct is_base_of + : public integral_constant<bool, __is_base_of(_Base, _Derived)> + { }; + + template<typename _From, typename _To, + bool = __or_<is_void<_From>, is_function<_To>, + is_array<_To>>::value> + struct __is_convertible_helper + { typedef typename is_void<_To>::type type; }; + + template<typename _From, typename _To> + class __is_convertible_helper<_From, _To, false> + { + template<typename _To1> + static void __test_aux(_To1); + + template<typename _From1, typename _To1, + typename = decltype(__test_aux<_To1>(std::declval<_From1>()))> + static true_type + __test(int); + + template<typename, typename> + static false_type + __test(...); + + public: + typedef decltype(__test<_From, _To>(0)) type; + }; + + + + template<typename _From, typename _To> + struct is_convertible + : public __is_convertible_helper<_From, _To>::type + { }; + + + + + + template<typename _Tp> + struct remove_const + { typedef _Tp type; }; + + template<typename _Tp> + struct remove_const<_Tp const> + { typedef _Tp type; }; + + + template<typename _Tp> + struct remove_volatile + { typedef _Tp type; }; + + template<typename _Tp> + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + + template<typename _Tp> + struct remove_cv + { + typedef typename + remove_const<typename remove_volatile<_Tp>::type>::type type; + }; + + + template<typename _Tp> + struct add_const + { typedef _Tp const type; }; + + + template<typename _Tp> + struct add_volatile + { typedef _Tp volatile type; }; + + + template<typename _Tp> + struct add_cv + { + typedef typename + add_const<typename add_volatile<_Tp>::type>::type type; + }; + + + + + + + template<typename _Tp> + using remove_const_t = typename remove_const<_Tp>::type; + + + template<typename _Tp> + using remove_volatile_t = typename remove_volatile<_Tp>::type; + + + template<typename _Tp> + using remove_cv_t = typename remove_cv<_Tp>::type; + + + template<typename _Tp> + using add_const_t = typename add_const<_Tp>::type; + + + template<typename _Tp> + using add_volatile_t = typename add_volatile<_Tp>::type; + + + template<typename _Tp> + using add_cv_t = typename add_cv<_Tp>::type; + + + + + + template<typename _Tp> + struct remove_reference + { typedef _Tp type; }; + + template<typename _Tp> + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + template<typename _Tp> + struct remove_reference<_Tp&&> + { typedef _Tp type; }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __add_lvalue_reference_helper + { typedef _Tp type; }; + + template<typename _Tp> + struct __add_lvalue_reference_helper<_Tp, true> + { typedef _Tp& type; }; + + + template<typename _Tp> + struct add_lvalue_reference + : public __add_lvalue_reference_helper<_Tp> + { }; + + template<typename _Tp, bool = __is_referenceable<_Tp>::value> + struct __add_rvalue_reference_helper + { typedef _Tp type; }; + + template<typename _Tp> + struct __add_rvalue_reference_helper<_Tp, true> + { typedef _Tp&& type; }; + + + template<typename _Tp> + struct add_rvalue_reference + : public __add_rvalue_reference_helper<_Tp> + { }; + + + + template<typename _Tp> + using remove_reference_t = typename remove_reference<_Tp>::type; + + + template<typename _Tp> + using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; + + + template<typename _Tp> + using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; + + + + + + template<typename _Unqualified, bool _IsConst, bool _IsVol> + struct __cv_selector; + + template<typename _Unqualified> + struct __cv_selector<_Unqualified, false, false> + { typedef _Unqualified __type; }; + + template<typename _Unqualified> + struct __cv_selector<_Unqualified, false, true> + { typedef volatile _Unqualified __type; }; + + template<typename _Unqualified> + struct __cv_selector<_Unqualified, true, false> + { typedef const _Unqualified __type; }; + + template<typename _Unqualified> + struct __cv_selector<_Unqualified, true, true> + { typedef const volatile _Unqualified __type; }; + + template<typename _Qualified, typename _Unqualified, + bool _IsConst = is_const<_Qualified>::value, + bool _IsVol = is_volatile<_Qualified>::value> + class __match_cv_qualifiers + { + typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; + + public: + typedef typename __match::__type __type; + }; + + + template<typename _Tp> + struct __make_unsigned + { typedef _Tp __type; }; + + template<> + struct __make_unsigned<char> + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned<signed char> + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned<short> + { typedef unsigned short __type; }; + + template<> + struct __make_unsigned<int> + { typedef unsigned int __type; }; + + template<> + struct __make_unsigned<long> + { typedef unsigned long __type; }; + + template<> + struct __make_unsigned<long long> + { typedef unsigned long long __type; }; +# 1718 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<typename _Tp, + bool _IsInt = is_integral<_Tp>::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_unsigned_selector; + + template<typename _Tp> + class __make_unsigned_selector<_Tp, true, false> + { + typedef __make_unsigned<typename remove_cv<_Tp>::type> __unsignedt; + typedef typename __unsignedt::__type __unsigned_type; + typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; + + public: + typedef typename __cv_unsigned::__type __type; + }; + + template<typename _Tp> + class __make_unsigned_selector<_Tp, false, true> + { + + 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); + typedef conditional<__b2, unsigned int, unsigned long> __cond2; + typedef typename __cond2::type __cond2_type; + typedef conditional<__b1, unsigned short, __cond2_type> __cond1; + typedef typename __cond1::type __cond1_type; + + public: + typedef typename conditional<__b0, __smallest, __cond1_type>::type __type; + }; + + + + + + template<typename _Tp> + struct make_unsigned + { typedef typename __make_unsigned_selector<_Tp>::__type type; }; + + + template<> + struct make_unsigned<bool>; + + + + template<typename _Tp> + struct __make_signed + { typedef _Tp __type; }; + + template<> + struct __make_signed<char> + { typedef signed char __type; }; + + template<> + struct __make_signed<unsigned char> + { typedef signed char __type; }; + + template<> + struct __make_signed<unsigned short> + { typedef signed short __type; }; + + template<> + struct __make_signed<unsigned int> + { typedef signed int __type; }; + + template<> + struct __make_signed<unsigned long> + { typedef signed long __type; }; + + template<> + struct __make_signed<unsigned long long> + { typedef signed long long __type; }; + + + template<> + struct __make_signed<wchar_t> : __make_signed<unsigned int> + { }; + + + + template<> + struct __make_signed<char16_t> : __make_signed<uint_least16_t> + { }; + template<> + struct __make_signed<char32_t> : __make_signed<uint_least32_t> + { }; +# 1830 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<typename _Tp, + bool _IsInt = is_integral<_Tp>::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_signed_selector; + + template<typename _Tp> + class __make_signed_selector<_Tp, true, false> + { + typedef __make_signed<typename remove_cv<_Tp>::type> __signedt; + typedef typename __signedt::__type __signed_type; + typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; + + public: + typedef typename __cv_signed::__type __type; + }; + + template<typename _Tp> + class __make_signed_selector<_Tp, false, true> + { + + typedef signed char __smallest; + static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); + static const bool __b1 = sizeof(_Tp) <= sizeof(signed short); + static const bool __b2 = sizeof(_Tp) <= sizeof(signed int); + typedef conditional<__b2, signed int, signed long> __cond2; + typedef typename __cond2::type __cond2_type; + typedef conditional<__b1, signed short, __cond2_type> __cond1; + typedef typename __cond1::type __cond1_type; + + public: + typedef typename conditional<__b0, __smallest, __cond1_type>::type __type; + }; + + + + + + template<typename _Tp> + struct make_signed + { typedef typename __make_signed_selector<_Tp>::__type type; }; + + + template<> + struct make_signed<bool>; + + + + template<typename _Tp> + using make_signed_t = typename make_signed<_Tp>::type; + + + template<typename _Tp> + using make_unsigned_t = typename make_unsigned<_Tp>::type; + + + + + + template<typename _Tp> + struct remove_extent + { typedef _Tp type; }; + + template<typename _Tp, std::size_t _Size> + struct remove_extent<_Tp[_Size]> + { typedef _Tp type; }; + + template<typename _Tp> + struct remove_extent<_Tp[]> + { typedef _Tp type; }; + + + template<typename _Tp> + struct remove_all_extents + { typedef _Tp type; }; + + template<typename _Tp, std::size_t _Size> + struct remove_all_extents<_Tp[_Size]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + template<typename _Tp> + struct remove_all_extents<_Tp[]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + + + template<typename _Tp> + using remove_extent_t = typename remove_extent<_Tp>::type; + + + template<typename _Tp> + using remove_all_extents_t = typename remove_all_extents<_Tp>::type; + + + + + template<typename _Tp, typename> + struct __remove_pointer_helper + { typedef _Tp type; }; + + template<typename _Tp, typename _Up> + struct __remove_pointer_helper<_Tp, _Up*> + { typedef _Up type; }; + + + template<typename _Tp> + struct remove_pointer + : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> + { }; + + + template<typename _Tp, bool = __or_<__is_referenceable<_Tp>, + is_void<_Tp>>::value> + struct __add_pointer_helper + { typedef _Tp type; }; + + template<typename _Tp> + struct __add_pointer_helper<_Tp, true> + { typedef typename remove_reference<_Tp>::type* type; }; + + template<typename _Tp> + struct add_pointer + : public __add_pointer_helper<_Tp> + { }; + + + + template<typename _Tp> + using remove_pointer_t = typename remove_pointer<_Tp>::type; + + + template<typename _Tp> + using add_pointer_t = typename add_pointer<_Tp>::type; + + + template<std::size_t _Len> + struct __aligned_storage_msa + { + union __type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__)) { } __align; + }; + }; +# 1984 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template<std::size_t _Len, std::size_t _Align = + __alignof__(typename __aligned_storage_msa<_Len>::__type)> + struct aligned_storage + { + union type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__((_Align)))) { } __align; + }; + }; + + template <typename... _Types> + struct __strictest_alignment + { + static const size_t _S_alignment = 0; + static const size_t _S_size = 0; + }; + + template <typename _Tp, typename... _Types> + struct __strictest_alignment<_Tp, _Types...> + { + static const size_t _S_alignment = + alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment + ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; + static const size_t _S_size = + sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size + ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; + }; +# 2023 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + template <size_t _Len, typename... _Types> + struct aligned_union + { + private: + static_assert(sizeof...(_Types) != 0, "At least one type is required"); + + using __strictest = __strictest_alignment<_Types...>; + static const size_t _S_len = _Len > __strictest::_S_size + ? _Len : __strictest::_S_size; + public: + + static const size_t alignment_value = __strictest::_S_alignment; + + typedef typename aligned_storage<_S_len, alignment_value>::type type; + }; + + template <size_t _Len, typename... _Types> + const size_t aligned_union<_Len, _Types...>::alignment_value; + + + + template<typename _Up, + bool _IsArray = is_array<_Up>::value, + bool _IsFunction = is_function<_Up>::value> + struct __decay_selector; + + + template<typename _Up> + struct __decay_selector<_Up, false, false> + { typedef typename remove_cv<_Up>::type __type; }; + + template<typename _Up> + struct __decay_selector<_Up, true, false> + { typedef typename remove_extent<_Up>::type* __type; }; + + template<typename _Up> + struct __decay_selector<_Up, false, true> + { typedef typename add_pointer<_Up>::type __type; }; + + + template<typename _Tp> + class decay + { + typedef typename remove_reference<_Tp>::type __remove_type; + + public: + typedef typename __decay_selector<__remove_type>::__type type; + }; + + template<typename _Tp> + class reference_wrapper; + + + template<typename _Tp> + struct __strip_reference_wrapper + { + typedef _Tp __type; + }; + + template<typename _Tp> + struct __strip_reference_wrapper<reference_wrapper<_Tp> > + { + typedef _Tp& __type; + }; + + template<typename _Tp> + struct __decay_and_strip + { + typedef typename __strip_reference_wrapper< + typename decay<_Tp>::type>::__type __type; + }; + + + + + template<bool, typename _Tp = void> + struct enable_if + { }; + + + template<typename _Tp> + struct enable_if<true, _Tp> + { typedef _Tp type; }; + + template<typename... _Cond> + using _Require = typename enable_if<__and_<_Cond...>::value>::type; + + + + template<bool _Cond, typename _Iftrue, typename _Iffalse> + struct conditional + { typedef _Iftrue type; }; + + + template<typename _Iftrue, typename _Iffalse> + struct conditional<false, _Iftrue, _Iffalse> + { typedef _Iffalse type; }; + + + template<typename... _Tp> + struct common_type; + + + + struct __do_common_type_impl + { + template<typename _Tp, typename _Up> + static __success_type<typename decay<decltype + (true ? std::declval<_Tp>() + : std::declval<_Up>())>::type> _S_test(int); + + template<typename, typename> + static __failure_type _S_test(...); + }; + + template<typename _Tp, typename _Up> + struct __common_type_impl + : private __do_common_type_impl + { + typedef decltype(_S_test<_Tp, _Up>(0)) type; + }; + + struct __do_member_type_wrapper + { + template<typename _Tp> + static __success_type<typename _Tp::type> _S_test(int); + + template<typename> + static __failure_type _S_test(...); + }; + + template<typename _Tp> + struct __member_type_wrapper + : private __do_member_type_wrapper + { + typedef decltype(_S_test<_Tp>(0)) type; + }; + + template<typename _CTp, typename... _Args> + struct __expanded_common_type_wrapper + { + typedef common_type<typename _CTp::type, _Args...> type; + }; + + template<typename... _Args> + struct __expanded_common_type_wrapper<__failure_type, _Args...> + { typedef __failure_type type; }; + + template<typename _Tp> + struct common_type<_Tp> + { typedef typename decay<_Tp>::type type; }; + + template<typename _Tp, typename _Up> + struct common_type<_Tp, _Up> + : public __common_type_impl<_Tp, _Up>::type + { }; + + template<typename _Tp, typename _Up, typename... _Vp> + struct common_type<_Tp, _Up, _Vp...> + : public __expanded_common_type_wrapper<typename __member_type_wrapper< + common_type<_Tp, _Up>>::type, _Vp...>::type + { }; + + + template<typename _Tp> + struct underlying_type + { + typedef __underlying_type(_Tp) type; + }; + + template<typename _Tp> + struct __declval_protector + { + static const bool __stop = false; + static typename add_rvalue_reference<_Tp>::type __delegate(); + }; + + template<typename _Tp> + inline typename add_rvalue_reference<_Tp>::type + declval() noexcept + { + static_assert(__declval_protector<_Tp>::__stop, + "declval() must not be used!"); + return __declval_protector<_Tp>::__delegate(); + } + + + template<typename _Signature> + class result_of; + + + + + + + struct __result_of_memfun_ref_impl + { + template<typename _Fp, typename _Tp1, typename... _Args> + static __success_type<decltype( + (std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...) + )> _S_test(int); + + template<typename...> + static __failure_type _S_test(...); + }; + + template<typename _MemPtr, typename _Arg, typename... _Args> + struct __result_of_memfun_ref + : private __result_of_memfun_ref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; + }; + + + struct __result_of_memfun_deref_impl + { + template<typename _Fp, typename _Tp1, typename... _Args> + static __success_type<decltype( + ((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...) + )> _S_test(int); + + template<typename...> + static __failure_type _S_test(...); + }; + + template<typename _MemPtr, typename _Arg, typename... _Args> + struct __result_of_memfun_deref + : private __result_of_memfun_deref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; + }; + + + struct __result_of_memobj_ref_impl + { + template<typename _Fp, typename _Tp1> + static __success_type<decltype( + std::declval<_Tp1>().*std::declval<_Fp>() + )> _S_test(int); + + template<typename, typename> + static __failure_type _S_test(...); + }; + + template<typename _MemPtr, typename _Arg> + struct __result_of_memobj_ref + : private __result_of_memobj_ref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; + }; + + + struct __result_of_memobj_deref_impl + { + template<typename _Fp, typename _Tp1> + static __success_type<decltype( + (*std::declval<_Tp1>()).*std::declval<_Fp>() + )> _S_test(int); + + template<typename, typename> + static __failure_type _S_test(...); + }; + + template<typename _MemPtr, typename _Arg> + struct __result_of_memobj_deref + : private __result_of_memobj_deref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; + }; + + template<typename _MemPtr, typename _Arg> + struct __result_of_memobj; + + template<typename _Res, typename _Class, typename _Arg> + struct __result_of_memobj<_Res _Class::*, _Arg> + { + typedef typename remove_cv<typename remove_reference< + _Arg>::type>::type _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional<__or_<is_same<_Argval, _Class>, + is_base_of<_Class, _Argval>>::value, + __result_of_memobj_ref<_MemPtr, _Arg>, + __result_of_memobj_deref<_MemPtr, _Arg> + >::type::type type; + }; + + template<typename _MemPtr, typename _Arg, typename... _Args> + struct __result_of_memfun; + + template<typename _Res, typename _Class, typename _Arg, typename... _Args> + struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> + { + typedef typename remove_cv<typename remove_reference< + _Arg>::type>::type _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional<__or_<is_same<_Argval, _Class>, + is_base_of<_Class, _Argval>>::value, + __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, + __result_of_memfun_deref<_MemPtr, _Arg, _Args...> + >::type::type type; + }; + + template<bool, bool, typename _Functor, typename... _ArgTypes> + struct __result_of_impl + { + typedef __failure_type type; + }; + + template<typename _MemPtr, typename _Arg> + struct __result_of_impl<true, false, _MemPtr, _Arg> + : public __result_of_memobj<typename decay<_MemPtr>::type, _Arg> + { }; + + template<typename _MemPtr, typename _Arg, typename... _Args> + struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...> + : public __result_of_memfun<typename decay<_MemPtr>::type, _Arg, _Args...> + { }; + + + struct __result_of_other_impl + { + template<typename _Fn, typename... _Args> + static __success_type<decltype( + std::declval<_Fn>()(std::declval<_Args>()...) + )> _S_test(int); + + template<typename...> + static __failure_type _S_test(...); + }; + + template<typename _Functor, typename... _ArgTypes> + struct __result_of_impl<false, false, _Functor, _ArgTypes...> + : private __result_of_other_impl + { + typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; + }; + + template<typename _Functor, typename... _ArgTypes> + struct result_of<_Functor(_ArgTypes...)> + : public __result_of_impl< + is_member_object_pointer< + typename remove_reference<_Functor>::type + >::value, + is_member_function_pointer< + typename remove_reference<_Functor>::type + >::value, + _Functor, _ArgTypes... + >::type + { }; + + + + template<size_t _Len, size_t _Align = + __alignof__(typename __aligned_storage_msa<_Len>::__type)> + using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; + + template <size_t _Len, typename... _Types> + using aligned_union_t = typename aligned_union<_Len, _Types...>::type; + + + template<typename _Tp> + using decay_t = typename decay<_Tp>::type; + + + template<bool _Cond, typename _Tp = void> + using enable_if_t = typename enable_if<_Cond, _Tp>::type; + + + template<bool _Cond, typename _Iftrue, typename _Iffalse> + using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; + + + template<typename... _Tp> + using common_type_t = typename common_type<_Tp...>::type; + + + template<typename _Tp> + using underlying_type_t = typename underlying_type<_Tp>::type; + + + template<typename _Tp> + using result_of_t = typename result_of<_Tp>::type; + + + template<typename...> using __void_t = void; +# 2425 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/type_traits" 3 + +} +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 74 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 + template<typename _Tp> + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type& __t) noexcept + { return static_cast<_Tp&&>(__t); } + + + + + + + + template<typename _Tp> + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type&& __t) noexcept + { + static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" + " substituting _Tp is an lvalue reference type"); + return static_cast<_Tp&&>(__t); + } + + + + + + + template<typename _Tp> + constexpr typename std::remove_reference<_Tp>::type&& + move(_Tp&& __t) noexcept + { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); } + + + template<typename _Tp> + struct __move_if_noexcept_cond + : public __and_<__not_<is_nothrow_move_constructible<_Tp>>, + is_copy_constructible<_Tp>>::type { }; +# 118 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 + template<typename _Tp> + constexpr typename + conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type + move_if_noexcept(_Tp& __x) noexcept + { return std::move(__x); } +# 133 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 + template<typename _Tp> + inline _Tp* + addressof(_Tp& __r) noexcept + { return std::__addressof(__r); } + + + template <typename _Tp, typename _Up = _Tp> + inline _Tp + __exchange(_Tp& __obj, _Up&& __new_val) + { + _Tp __old_val = std::move(__obj); + __obj = std::forward<_Up>(__new_val); + return __old_val; + } + + + +} +# 159 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 174 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/move.h" 3 + template<typename _Tp> + inline void + swap(_Tp& __a, _Tp& __b) + + noexcept(__and_<is_nothrow_move_constructible<_Tp>, + is_nothrow_move_assignable<_Tp>>::value) + + { + + + + _Tp __tmp = std::move(__a); + __a = std::move(__b); + __b = std::move(__tmp); + } + + + + + template<typename _Tp, size_t _Nm> + inline void + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) + + noexcept(noexcept(swap(*__a, *__b))) + + { + for (size_t __n = 0; __n < _Nm; ++__n) + swap(__a[__n], __b[__n]); + } + + + +} +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 2 3 + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 76 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 3 + struct piecewise_construct_t { }; + + + constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); + + + template<typename...> + class tuple; + + template<std::size_t...> + struct _Index_tuple; +# 95 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 3 + template<class _T1, class _T2> + struct pair + { + typedef _T1 first_type; + typedef _T2 second_type; + + _T1 first; + _T2 second; + + + + + + constexpr pair() + : first(), second() { } + + + constexpr pair(const _T1& __a, const _T2& __b) + : first(__a), second(__b) { } + + + + + + + + template<class _U1, class _U2, class = typename + enable_if<__and_<is_convertible<const _U1&, _T1>, + is_convertible<const _U2&, _T2>>::value>::type> + constexpr pair(const pair<_U1, _U2>& __p) + : first(__p.first), second(__p.second) { } + + constexpr pair(const pair&) = default; + constexpr pair(pair&&) = default; + + + template<class _U1, class = typename + enable_if<is_convertible<_U1, _T1>::value>::type> + constexpr pair(_U1&& __x, const _T2& __y) + : first(std::forward<_U1>(__x)), second(__y) { } + + template<class _U2, class = typename + enable_if<is_convertible<_U2, _T2>::value>::type> + constexpr pair(const _T1& __x, _U2&& __y) + : first(__x), second(std::forward<_U2>(__y)) { } + + template<class _U1, class _U2, class = typename + enable_if<__and_<is_convertible<_U1, _T1>, + is_convertible<_U2, _T2>>::value>::type> + constexpr pair(_U1&& __x, _U2&& __y) + : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } + + template<class _U1, class _U2, class = typename + enable_if<__and_<is_convertible<_U1, _T1>, + is_convertible<_U2, _T2>>::value>::type> + constexpr pair(pair<_U1, _U2>&& __p) + : first(std::forward<_U1>(__p.first)), + second(std::forward<_U2>(__p.second)) { } + + template<typename... _Args1, typename... _Args2> + pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); + + pair& + operator=(const pair& __p) + { + first = __p.first; + second = __p.second; + return *this; + } + + pair& + operator=(pair&& __p) + noexcept(__and_<is_nothrow_move_assignable<_T1>, + is_nothrow_move_assignable<_T2>>::value) + { + first = std::forward<first_type>(__p.first); + second = std::forward<second_type>(__p.second); + return *this; + } + + template<class _U1, class _U2> + pair& + operator=(const pair<_U1, _U2>& __p) + { + first = __p.first; + second = __p.second; + return *this; + } + + template<class _U1, class _U2> + pair& + operator=(pair<_U1, _U2>&& __p) + { + first = std::forward<_U1>(__p.first); + second = std::forward<_U2>(__p.second); + return *this; + } + + void + swap(pair& __p) + noexcept(noexcept(swap(first, __p.first)) + && noexcept(swap(second, __p.second))) + { + using std::swap; + swap(first, __p.first); + swap(second, __p.second); + } + + private: + template<typename... _Args1, std::size_t... _Indexes1, + typename... _Args2, std::size_t... _Indexes2> + pair(tuple<_Args1...>&, tuple<_Args2...>&, + _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); + + }; + + + template<class _T1, class _T2> + inline constexpr bool + operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __x.first == __y.first && __x.second == __y.second; } + + + template<class _T1, class _T2> + inline constexpr bool + operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __x.first < __y.first + || (!(__y.first < __x.first) && __x.second < __y.second); } + + + template<class _T1, class _T2> + inline constexpr bool + operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__x == __y); } + + + template<class _T1, class _T2> + inline constexpr bool + operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __y < __x; } + + + template<class _T1, class _T2> + inline constexpr bool + operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__y < __x); } + + + template<class _T1, class _T2> + inline constexpr bool + operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__x < __y); } + + + + + + template<class _T1, class _T2> + inline void + swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } +# 273 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 3 + template<class _T1, class _T2> + constexpr pair<typename __decay_and_strip<_T1>::__type, + typename __decay_and_strip<_T2>::__type> + make_pair(_T1&& __x, _T2&& __y) + { + typedef typename __decay_and_strip<_T1>::__type __ds_type1; + typedef typename __decay_and_strip<_T2>::__type __ds_type2; + typedef pair<__ds_type1, __ds_type2> __pair_type; + return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); + } +# 292 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_pair.h" 3 + +} +# 71 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 2 3 + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/initializer_list" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/initializer_list" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/initializer_list" 3 + + + + + +#pragma GCC visibility push(default) + + + +namespace std +{ + + template<class _E> + class initializer_list + { + public: + typedef _E value_type; + typedef const _E& reference; + typedef const _E& const_reference; + typedef size_t size_type; + typedef const _E* iterator; + typedef const _E* const_iterator; + + private: + iterator _M_array; + size_type _M_len; + + + constexpr initializer_list(const_iterator __a, size_type __l) + : _M_array(__a), _M_len(__l) { } + + public: + constexpr initializer_list() noexcept + : _M_array(0), _M_len(0) { } + + + constexpr size_type + size() const noexcept { return _M_len; } + + + constexpr const_iterator + begin() const noexcept { return _M_array; } + + + constexpr const_iterator + end() const noexcept { return begin() + size(); } + }; + + + + + + + template<class _Tp> + constexpr const _Tp* + begin(initializer_list<_Tp> __ils) noexcept + { return __ils.begin(); } + + + + + + + template<class _Tp> + constexpr const _Tp* + end(initializer_list<_Tp> __ils) noexcept + { return __ils.end(); } +} + +#pragma GCC visibility pop +# 76 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/utility" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<class _Tp> + class tuple_size; + + template<std::size_t _Int, class _Tp> + class tuple_element; + + + + + template<class _Tp1, class _Tp2> + struct tuple_size<std::pair<_Tp1, _Tp2>> + : public integral_constant<std::size_t, 2> { }; + + + template<class _Tp1, class _Tp2> + struct tuple_element<0, std::pair<_Tp1, _Tp2>> + { typedef _Tp1 type; }; + + + template<class _Tp1, class _Tp2> + struct tuple_element<1, std::pair<_Tp1, _Tp2>> + { typedef _Tp2 type; }; + + template<std::size_t _Int> + struct __pair_get; + + template<> + struct __pair_get<0> + { + template<typename _Tp1, typename _Tp2> + static constexpr _Tp1& + __get(std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.first; } + + template<typename _Tp1, typename _Tp2> + static constexpr _Tp1&& + __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward<_Tp1>(__pair.first); } + + template<typename _Tp1, typename _Tp2> + static constexpr const _Tp1& + __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.first; } + }; + + template<> + struct __pair_get<1> + { + template<typename _Tp1, typename _Tp2> + static constexpr _Tp2& + __get(std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.second; } + + template<typename _Tp1, typename _Tp2> + static constexpr _Tp2&& + __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward<_Tp2>(__pair.second); } + + template<typename _Tp1, typename _Tp2> + static constexpr const _Tp2& + __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.second; } + }; + + template<std::size_t _Int, class _Tp1, class _Tp2> + constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& + get(std::pair<_Tp1, _Tp2>& __in) noexcept + { return __pair_get<_Int>::__get(__in); } + + template<std::size_t _Int, class _Tp1, class _Tp2> + constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& + get(std::pair<_Tp1, _Tp2>&& __in) noexcept + { return __pair_get<_Int>::__move_get(std::move(__in)); } + + template<std::size_t _Int, class _Tp1, class _Tp2> + constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& + get(const std::pair<_Tp1, _Tp2>& __in) noexcept + { return __pair_get<_Int>::__const_get(__in); } + + + + + + template <typename _Tp, typename _Up> + constexpr _Tp& + get(pair<_Tp, _Up>& __p) noexcept + { return __p.first; } + + template <typename _Tp, typename _Up> + constexpr const _Tp& + get(const pair<_Tp, _Up>& __p) noexcept + { return __p.first; } + + template <typename _Tp, typename _Up> + constexpr _Tp&& + get(pair<_Tp, _Up>&& __p) noexcept + { return std::move(__p.first); } + + template <typename _Tp, typename _Up> + constexpr _Tp& + get(pair<_Up, _Tp>& __p) noexcept + { return __p.second; } + + template <typename _Tp, typename _Up> + constexpr const _Tp& + get(const pair<_Up, _Tp>& __p) noexcept + { return __p.second; } + + template <typename _Tp, typename _Up> + constexpr _Tp&& + get(pair<_Up, _Tp>&& __p) noexcept + { return std::move(__p.second); } + + + + + template <typename _Tp, typename _Up = _Tp> + inline _Tp + exchange(_Tp& __obj, _Up&& __new_val) + { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } + + + + + template<size_t... _Indexes> + struct _Index_tuple + { + typedef _Index_tuple<_Indexes..., sizeof...(_Indexes)> __next; + }; + + + template<size_t _Num> + struct _Build_index_tuple + { + typedef typename _Build_index_tuple<_Num - 1>::__type::__next __type; + }; + + template<> + struct _Build_index_tuple<0> + { + typedef _Index_tuple<> __type; + }; + + + + + + + template<typename _Tp, _Tp... _Idx> + struct integer_sequence + { + typedef _Tp value_type; + static constexpr size_t size() { return sizeof...(_Idx); } + }; + + template<typename _Tp, _Tp _Num, + typename _ISeq = typename _Build_index_tuple<_Num>::__type> + struct _Make_integer_sequence; + + template<typename _Tp, _Tp _Num, size_t... _Idx> + struct _Make_integer_sequence<_Tp, _Num, _Index_tuple<_Idx...>> + { + static_assert( _Num >= 0, + "Cannot make integer sequence of negative length" ); + + typedef integer_sequence<_Tp, static_cast<_Tp>(_Idx)...> __type; + }; + + + template<typename _Tp, _Tp _Num> + using make_integer_sequence + = typename _Make_integer_sequence<_Tp, _Num>::__type; + + + template<size_t... _Idx> + using index_sequence = integer_sequence<size_t, _Idx...>; + + + template<size_t _Num> + using make_index_sequence = make_integer_sequence<size_t, _Num>; + + + template<typename... _Types> + using index_sequence_for = make_index_sequence<sizeof...(_Types)>; + + + +} +# 986 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qcompilerdetection.h" 2 +# 1 "../../include/QtCore/qcompilerdetection.h" 2 +# 81 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 91 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/algorithm" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/algorithm" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/algorithm" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 1 3 +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functexcept.h" 1 3 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functexcept.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_defines.h" 1 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functexcept.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + void + __throw_bad_exception(void) __attribute__((__noreturn__)); + + + void + __throw_bad_alloc(void) __attribute__((__noreturn__)); + + + void + __throw_bad_cast(void) __attribute__((__noreturn__)); + + void + __throw_bad_typeid(void) __attribute__((__noreturn__)); + + + void + __throw_logic_error(const char*) __attribute__((__noreturn__)); + + void + __throw_domain_error(const char*) __attribute__((__noreturn__)); + + void + __throw_invalid_argument(const char*) __attribute__((__noreturn__)); + + void + __throw_length_error(const char*) __attribute__((__noreturn__)); + + void + __throw_out_of_range(const char*) __attribute__((__noreturn__)); + + void + __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) + __attribute__((__format__(__gnu_printf__, 1, 2))); + + void + __throw_runtime_error(const char*) __attribute__((__noreturn__)); + + void + __throw_range_error(const char*) __attribute__((__noreturn__)); + + void + __throw_overflow_error(const char*) __attribute__((__noreturn__)); + + void + __throw_underflow_error(const char*) __attribute__((__noreturn__)); + + + void + __throw_ios_failure(const char*) __attribute__((__noreturn__)); + + void + __throw_system_error(int) __attribute__((__noreturn__)); + + void + __throw_future_error(int) __attribute__((__noreturn__)); + + + void + __throw_bad_function_call() __attribute__((__noreturn__)); + + +} +# 61 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cpp_type_traits.h" 1 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cpp_type_traits.h" 3 + +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cpp_type_traits.h" 3 +# 68 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cpp_type_traits.h" 3 +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Iterator, typename _Container> + class __normal_iterator; + + +} + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + struct __true_type { }; + struct __false_type { }; + + template<bool> + struct __truth_type + { typedef __false_type __type; }; + + template<> + struct __truth_type<true> + { typedef __true_type __type; }; + + + + template<class _Sp, class _Tp> + struct __traitor + { + enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + + template<typename, typename> + struct __are_same + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<typename _Tp> + struct __are_same<_Tp, _Tp> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<typename _Tp> + struct __is_void + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_void<void> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template<typename _Tp> + struct __is_integer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + + + template<> + struct __is_integer<bool> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<signed char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<unsigned char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer<wchar_t> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + template<> + struct __is_integer<char16_t> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<char32_t> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_integer<short> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<unsigned short> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<int> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<unsigned int> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<long> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<unsigned long> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<long long> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer<unsigned long long> + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# 287 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cpp_type_traits.h" 3 + template<typename _Tp> + struct __is_floating + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + template<> + struct __is_floating<float> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating<double> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating<long double> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template<typename _Tp> + struct __is_pointer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<typename _Tp> + struct __is_pointer<_Tp*> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template<typename _Tp> + struct __is_normal_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<typename _Iterator, typename _Container> + struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, + _Container> > + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template<typename _Tp> + struct __is_arithmetic + : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > + { }; + + + + + template<typename _Tp> + struct __is_scalar + : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > + { }; + + + + + template<typename _Tp> + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_char<char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<> + struct __is_char<wchar_t> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template<typename _Tp> + struct __is_byte + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_byte<char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte<signed char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte<unsigned char> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template<typename _Tp> + struct __is_move_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + template<typename _Iterator> + class move_iterator; + + template<typename _Iterator> + struct __is_move_iterator< move_iterator<_Iterator> > + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + +} +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/type_traits.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/type_traits.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/type_traits.h" 3 + + + + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + template<bool, typename> + struct __enable_if + { }; + + template<typename _Tp> + struct __enable_if<true, _Tp> + { typedef _Tp __type; }; + + + + template<bool _Cond, typename _Iftrue, typename _Iffalse> + struct __conditional_type + { typedef _Iftrue __type; }; + + template<typename _Iftrue, typename _Iffalse> + struct __conditional_type<false, _Iftrue, _Iffalse> + { typedef _Iffalse __type; }; + + + + template<typename _Tp> + struct __add_unsigned + { + private: + typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __add_unsigned<char> + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned<signed char> + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned<short> + { typedef unsigned short __type; }; + + template<> + struct __add_unsigned<int> + { typedef unsigned int __type; }; + + template<> + struct __add_unsigned<long> + { typedef unsigned long __type; }; + + template<> + struct __add_unsigned<long long> + { typedef unsigned long long __type; }; + + + template<> + struct __add_unsigned<bool>; + + template<> + struct __add_unsigned<wchar_t>; + + + + template<typename _Tp> + struct __remove_unsigned + { + private: + typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __remove_unsigned<char> + { typedef signed char __type; }; + + template<> + struct __remove_unsigned<unsigned char> + { typedef signed char __type; }; + + template<> + struct __remove_unsigned<unsigned short> + { typedef short __type; }; + + template<> + struct __remove_unsigned<unsigned int> + { typedef int __type; }; + + template<> + struct __remove_unsigned<unsigned long> + { typedef long __type; }; + + template<> + struct __remove_unsigned<unsigned long long> + { typedef long long __type; }; + + + template<> + struct __remove_unsigned<bool>; + + template<> + struct __remove_unsigned<wchar_t>; + + + + template<typename _Type> + inline bool + __is_null_pointer(_Type* __ptr) + { return __ptr == 0; } + + template<typename _Type> + inline bool + __is_null_pointer(_Type) + { return false; } + + + inline bool + __is_null_pointer(std::nullptr_t) + { return true; } + + + + template<typename _Tp, bool = std::__is_integer<_Tp>::__value> + struct __promote + { typedef double __type; }; + + + + + template<typename _Tp> + struct __promote<_Tp, false> + { }; + + template<> + struct __promote<long double> + { typedef long double __type; }; + + template<> + struct __promote<double> + { typedef double __type; }; + + template<> + struct __promote<float> + { typedef float __type; }; + + template<typename _Tp, typename _Up, + typename _Tp2 = typename __promote<_Tp>::__type, + typename _Up2 = typename __promote<_Up>::__type> + struct __promote_2 + { + typedef __typeof__(_Tp2() + _Up2()) __type; + }; + + template<typename _Tp, typename _Up, typename _Vp, + typename _Tp2 = typename __promote<_Tp>::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type> + struct __promote_3 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; + }; + + template<typename _Tp, typename _Up, typename _Vp, typename _Wp, + typename _Tp2 = typename __promote<_Tp>::__type, + typename _Up2 = typename __promote<_Up>::__type, + typename _Vp2 = typename __promote<_Vp>::__type, + typename _Wp2 = typename __promote<_Wp>::__type> + struct __promote_4 + { + typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; + }; + + +} +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/numeric_traits.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/numeric_traits.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/numeric_traits.h" 3 + + + + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + +# 54 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/numeric_traits.h" 3 + template<typename _Value> + struct __numeric_traits_integer + { + + static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); + static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); + + + + static const bool __is_signed = ((_Value)(-1) < 0); + static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); + }; + + template<typename _Value> + const _Value __numeric_traits_integer<_Value>::__min; + + template<typename _Value> + const _Value __numeric_traits_integer<_Value>::__max; + + template<typename _Value> + const bool __numeric_traits_integer<_Value>::__is_signed; + + template<typename _Value> + const int __numeric_traits_integer<_Value>::__digits; +# 99 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/numeric_traits.h" 3 + template<typename _Value> + struct __numeric_traits_floating + { + + static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); + + + static const bool __is_signed = true; + static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); + static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); + }; + + template<typename _Value> + const int __numeric_traits_floating<_Value>::__max_digits10; + + template<typename _Value> + const bool __numeric_traits_floating<_Value>::__is_signed; + + template<typename _Value> + const int __numeric_traits_floating<_Value>::__digits10; + + template<typename _Value> + const int __numeric_traits_floating<_Value>::__max_exponent10; + + template<typename _Value> + struct __numeric_traits + : public __conditional_type<std::__is_integer<_Value>::__value, + __numeric_traits_integer<_Value>, + __numeric_traits_floating<_Value> >::__type + { }; + + +} +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 1 3 +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + + + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 89 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + struct input_iterator_tag { }; + + + struct output_iterator_tag { }; + + + struct forward_iterator_tag : public input_iterator_tag { }; + + + + struct bidirectional_iterator_tag : public forward_iterator_tag { }; + + + + struct random_access_iterator_tag : public bidirectional_iterator_tag { }; +# 116 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, + typename _Pointer = _Tp*, typename _Reference = _Tp&> + struct iterator + { + + typedef _Category iterator_category; + + typedef _Tp value_type; + + typedef _Distance difference_type; + + typedef _Pointer pointer; + + typedef _Reference reference; + }; +# 143 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + template<typename _Iterator, typename = __void_t<>> + struct __iterator_traits { }; + + template<typename _Iterator> + struct __iterator_traits<_Iterator, + __void_t<typename _Iterator::iterator_category, + typename _Iterator::value_type, + typename _Iterator::difference_type, + typename _Iterator::pointer, + typename _Iterator::reference>> + { + typedef typename _Iterator::iterator_category iterator_category; + typedef typename _Iterator::value_type value_type; + typedef typename _Iterator::difference_type difference_type; + typedef typename _Iterator::pointer pointer; + typedef typename _Iterator::reference reference; + }; + + template<typename _Iterator> + struct iterator_traits + : public __iterator_traits<_Iterator> { }; +# 177 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_types.h" 3 + template<typename _Tp> + struct iterator_traits<_Tp*> + { + typedef random_access_iterator_tag iterator_category; + typedef _Tp value_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef _Tp& reference; + }; + + + template<typename _Tp> + struct iterator_traits<const _Tp*> + { + typedef random_access_iterator_tag iterator_category; + typedef _Tp value_type; + typedef ptrdiff_t difference_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + }; + + + + + + template<typename _Iter> + inline typename iterator_traits<_Iter>::iterator_category + __iterator_category(const _Iter&) + { return typename iterator_traits<_Iter>::iterator_category(); } + + + + + + template<typename _Iterator, bool _HasBase> + struct _Iter_base + { + typedef _Iterator iterator_type; + static iterator_type _S_base(_Iterator __it) + { return __it; } + }; + + template<typename _Iterator> + struct _Iter_base<_Iterator, true> + { + typedef typename _Iterator::iterator_type iterator_type; + static iterator_type _S_base(_Iterator __it) + { return __it.base(); } + }; + + + template<typename _InIter> + using _RequireInputIter = typename + enable_if<is_convertible<typename + iterator_traits<_InIter>::iterator_category, + input_iterator_tag>::value>::type; + + + +} +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 1 3 +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 3 + +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/debug/debug.h" 1 3 +# 46 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/debug/debug.h" 3 +namespace std +{ + namespace __debug { } +} + + + + +namespace __gnu_debug +{ + using namespace std::__debug; +} +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _InputIterator> + inline typename iterator_traits<_InputIterator>::difference_type + __distance(_InputIterator __first, _InputIterator __last, + input_iterator_tag) + { + + + + typename iterator_traits<_InputIterator>::difference_type __n = 0; + while (__first != __last) + { + ++__first; + ++__n; + } + return __n; + } + + template<typename _RandomAccessIterator> + inline typename iterator_traits<_RandomAccessIterator>::difference_type + __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, + random_access_iterator_tag) + { + + + + return __last - __first; + } +# 112 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 3 + template<typename _InputIterator> + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + + return std::__distance(__first, __last, + std::__iterator_category(__first)); + } + + template<typename _InputIterator, typename _Distance> + inline void + __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) + { + + + ; + while (__n--) + ++__i; + } + + template<typename _BidirectionalIterator, typename _Distance> + inline void + __advance(_BidirectionalIterator& __i, _Distance __n, + bidirectional_iterator_tag) + { + + + + if (__n > 0) + while (__n--) + ++__i; + else + while (__n++) + --__i; + } + + template<typename _RandomAccessIterator, typename _Distance> + inline void + __advance(_RandomAccessIterator& __i, _Distance __n, + random_access_iterator_tag) + { + + + + __i += __n; + } +# 171 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator_base_funcs.h" 3 + template<typename _InputIterator, typename _Distance> + inline void + advance(_InputIterator& __i, _Distance __n) + { + + typename iterator_traits<_InputIterator>::difference_type __d = __n; + std::__advance(__i, __d, std::__iterator_category(__i)); + } + + + + template<typename _ForwardIterator> + inline _ForwardIterator + next(_ForwardIterator __x, typename + iterator_traits<_ForwardIterator>::difference_type __n = 1) + { + std::advance(__x, __n); + return __x; + } + + template<typename _BidirectionalIterator> + inline _BidirectionalIterator + prev(_BidirectionalIterator __x, typename + iterator_traits<_BidirectionalIterator>::difference_type __n = 1) + { + std::advance(__x, -__n); + return __x; + } + + + + +} +# 67 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 1 3 +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ptr_traits.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ptr_traits.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + +template<typename _Tp, typename = __void_t<>> struct __has_element_type : false_type { }; template<typename _Tp> struct __has_element_type<_Tp, __void_t<typename _Tp::element_type>> : true_type { }; +template<typename _Tp, typename = __void_t<>> struct __has_difference_type : false_type { }; template<typename _Tp> struct __has_difference_type<_Tp, __void_t<typename _Tp::difference_type>> : true_type { }; + + template<typename _Tp, bool = __has_element_type<_Tp>::value> + struct __ptrtr_elt_type; + + template<typename _Tp> + struct __ptrtr_elt_type<_Tp, true> + { + typedef typename _Tp::element_type __type; + }; + + template<template<typename, typename...> class _SomePtr, typename _Tp, + typename... _Args> + struct __ptrtr_elt_type<_SomePtr<_Tp, _Args...>, false> + { + typedef _Tp __type; + }; + + template<typename _Tp, bool = __has_difference_type<_Tp>::value> + struct __ptrtr_diff_type + { + typedef typename _Tp::difference_type __type; + }; + + template<typename _Tp> + struct __ptrtr_diff_type<_Tp, false> + { + typedef ptrdiff_t __type; + }; + + template<typename _Ptr, typename _Up> + class __ptrtr_rebind_helper + { + template<typename _Ptr2, typename _Up2> + static constexpr true_type + _S_chk(typename _Ptr2::template rebind<_Up2>*); + + template<typename, typename> + static constexpr false_type + _S_chk(...); + + public: + using __type = decltype(_S_chk<_Ptr, _Up>(nullptr)); + }; + + template<typename _Tp, typename _Up, + bool = __ptrtr_rebind_helper<_Tp, _Up>::__type::value> + struct __ptrtr_rebind; + + template<typename _Tp, typename _Up> + struct __ptrtr_rebind<_Tp, _Up, true> + { + typedef typename _Tp::template rebind<_Up> __type; + }; + + template<template<typename, typename...> class _SomePtr, typename _Up, + typename _Tp, typename... _Args> + struct __ptrtr_rebind<_SomePtr<_Tp, _Args...>, _Up, false> + { + typedef _SomePtr<_Up, _Args...> __type; + }; + + template<typename _Tp, typename = typename remove_cv<_Tp>::type> + struct __ptrtr_not_void + { + typedef _Tp __type; + }; + + template<typename _Tp> + struct __ptrtr_not_void<_Tp, void> + { + struct __type { }; + }; + + template<typename _Ptr> + class __ptrtr_pointer_to + { + typedef typename __ptrtr_elt_type<_Ptr>::__type __orig_type; + typedef typename __ptrtr_not_void<__orig_type>::__type __element_type; + + public: + static _Ptr pointer_to(__element_type& __e) + { return _Ptr::pointer_to(__e); } + }; + + + + + + template<typename _Ptr> + struct pointer_traits : __ptrtr_pointer_to<_Ptr> + { + + typedef _Ptr pointer; + + typedef typename __ptrtr_elt_type<_Ptr>::__type element_type; + + typedef typename __ptrtr_diff_type<_Ptr>::__type difference_type; + + template<typename _Up> + using rebind = typename __ptrtr_rebind<_Ptr, _Up>::__type; + }; + + + + + + template<typename _Tp> + struct pointer_traits<_Tp*> + { + + typedef _Tp* pointer; + + typedef _Tp element_type; + + typedef ptrdiff_t difference_type; + + template<typename _Up> + using rebind = _Up*; + + + + + + + static pointer + pointer_to(typename __ptrtr_not_void<element_type>::__type& __r) noexcept + { return std::addressof(__r); } + }; + + +} +# 67 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 96 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Iterator> + class reverse_iterator + : public iterator<typename iterator_traits<_Iterator>::iterator_category, + typename iterator_traits<_Iterator>::value_type, + typename iterator_traits<_Iterator>::difference_type, + typename iterator_traits<_Iterator>::pointer, + typename iterator_traits<_Iterator>::reference> + { + protected: + _Iterator current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::pointer pointer; + typedef typename __traits_type::reference reference; + + + + + + + + reverse_iterator() : current() { } + + + + + explicit + reverse_iterator(iterator_type __x) : current(__x) { } + + + + + reverse_iterator(const reverse_iterator& __x) + : current(__x.current) { } + + + + + + template<typename _Iter> + reverse_iterator(const reverse_iterator<_Iter>& __x) + : current(__x.base()) { } + + + + + iterator_type + base() const + { return current; } +# 160 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + reference + operator*() const + { + _Iterator __tmp = current; + return *--__tmp; + } + + + + + + + pointer + operator->() const + { return &(operator*()); } + + + + + + + reverse_iterator& + operator++() + { + --current; + return *this; + } + + + + + + + reverse_iterator + operator++(int) + { + reverse_iterator __tmp = *this; + --current; + return __tmp; + } + + + + + + + reverse_iterator& + operator--() + { + ++current; + return *this; + } + + + + + + + reverse_iterator + operator--(int) + { + reverse_iterator __tmp = *this; + ++current; + return __tmp; + } + + + + + + + reverse_iterator + operator+(difference_type __n) const + { return reverse_iterator(current - __n); } + + + + + + + + reverse_iterator& + operator+=(difference_type __n) + { + current -= __n; + return *this; + } + + + + + + + reverse_iterator + operator-(difference_type __n) const + { return reverse_iterator(current + __n); } + + + + + + + + reverse_iterator& + operator-=(difference_type __n) + { + current += __n; + return *this; + } + + + + + + + reference + operator[](difference_type __n) const + { return *(*this + __n); } + }; +# 290 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Iterator> + inline bool + operator==(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __x.base() == __y.base(); } + + template<typename _Iterator> + inline bool + operator<(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() < __x.base(); } + + template<typename _Iterator> + inline bool + operator!=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x == __y); } + + template<typename _Iterator> + inline bool + operator>(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y < __x; } + + template<typename _Iterator> + inline bool + operator<=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__y < __x); } + + template<typename _Iterator> + inline bool + operator>=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x < __y); } + + template<typename _Iterator> + inline typename reverse_iterator<_Iterator>::difference_type + operator-(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() - __x.base(); } + + template<typename _Iterator> + inline reverse_iterator<_Iterator> + operator+(typename reverse_iterator<_Iterator>::difference_type __n, + const reverse_iterator<_Iterator>& __x) + { return reverse_iterator<_Iterator>(__x.base() - __n); } + + + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator==(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __x.base() == __y.base(); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator<(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y.base() < __x.base(); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator!=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x == __y); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator>(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y < __x; } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator<=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__y < __x); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator>=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x < __y); } + + template<typename _IteratorL, typename _IteratorR> + + + inline auto + operator-(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + -> decltype(__y.base() - __x.base()) + + + + + + { return __y.base() - __x.base(); } +# 397 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Iterator> + inline reverse_iterator<_Iterator> + make_reverse_iterator(_Iterator __i) + { return reverse_iterator<_Iterator>(__i); } +# 414 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container> + class back_insert_iterator + : public iterator<output_iterator_tag, void, void, void, void> + { + protected: + _Container* container; + + public: + + typedef _Container container_type; + + + explicit + back_insert_iterator(_Container& __x) : container(&__x) { } +# 448 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + back_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_back(__value); + return *this; + } + + back_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_back(std::move(__value)); + return *this; + } + + + + back_insert_iterator& + operator*() + { return *this; } + + + back_insert_iterator& + operator++() + { return *this; } + + + back_insert_iterator + operator++(int) + { return *this; } + }; +# 490 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container> + inline back_insert_iterator<_Container> + back_inserter(_Container& __x) + { return back_insert_iterator<_Container>(__x); } +# 505 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container> + class front_insert_iterator + : public iterator<output_iterator_tag, void, void, void, void> + { + protected: + _Container* container; + + public: + + typedef _Container container_type; + + + explicit front_insert_iterator(_Container& __x) : container(&__x) { } +# 538 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + front_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_front(__value); + return *this; + } + + front_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_front(std::move(__value)); + return *this; + } + + + + front_insert_iterator& + operator*() + { return *this; } + + + front_insert_iterator& + operator++() + { return *this; } + + + front_insert_iterator + operator++(int) + { return *this; } + }; +# 580 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container> + inline front_insert_iterator<_Container> + front_inserter(_Container& __x) + { return front_insert_iterator<_Container>(__x); } +# 599 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container> + class insert_iterator + : public iterator<output_iterator_tag, void, void, void, void> + { + protected: + _Container* container; + typename _Container::iterator iter; + + public: + + typedef _Container container_type; + + + + + + insert_iterator(_Container& __x, typename _Container::iterator __i) + : container(&__x), iter(__i) {} +# 650 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + insert_iterator& + operator=(const typename _Container::value_type& __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } + + insert_iterator& + operator=(typename _Container::value_type&& __value) + { + iter = container->insert(iter, std::move(__value)); + ++iter; + return *this; + } + + + + insert_iterator& + operator*() + { return *this; } + + + insert_iterator& + operator++() + { return *this; } + + + insert_iterator& + operator++(int) + { return *this; } + }; +# 694 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Container, typename _Iterator> + inline insert_iterator<_Container> + inserter(_Container& __x, _Iterator __i) + { + return insert_iterator<_Container>(__x, + typename _Container::iterator(__i)); + } + + + + +} + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + +# 718 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + using std::iterator_traits; + using std::iterator; + template<typename _Iterator, typename _Container> + class __normal_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::reference reference; + typedef typename __traits_type::pointer pointer; + + constexpr __normal_iterator() noexcept + : _M_current(_Iterator()) { } + + explicit + __normal_iterator(const _Iterator& __i) noexcept + : _M_current(__i) { } + + + template<typename _Iter> + __normal_iterator(const __normal_iterator<_Iter, + typename __enable_if< + (std::__are_same<_Iter, typename _Container::pointer>::__value), + _Container>::__type>& __i) noexcept + : _M_current(__i.base()) { } + + + reference + operator*() const noexcept + { return *_M_current; } + + pointer + operator->() const noexcept + { return _M_current; } + + __normal_iterator& + operator++() noexcept + { + ++_M_current; + return *this; + } + + __normal_iterator + operator++(int) noexcept + { return __normal_iterator(_M_current++); } + + + __normal_iterator& + operator--() noexcept + { + --_M_current; + return *this; + } + + __normal_iterator + operator--(int) noexcept + { return __normal_iterator(_M_current--); } + + + reference + operator[](difference_type __n) const noexcept + { return _M_current[__n]; } + + __normal_iterator& + operator+=(difference_type __n) noexcept + { _M_current += __n; return *this; } + + __normal_iterator + operator+(difference_type __n) const noexcept + { return __normal_iterator(_M_current + __n); } + + __normal_iterator& + operator-=(difference_type __n) noexcept + { _M_current -= __n; return *this; } + + __normal_iterator + operator-(difference_type __n) const noexcept + { return __normal_iterator(_M_current - __n); } + + const _Iterator& + base() const noexcept + { return _M_current; } + }; +# 818 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() == __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator==(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() == __rhs.base(); } + + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() != __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() != __rhs.base(); } + + + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() < __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator<(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() < __rhs.base(); } + + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() > __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator>(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() > __rhs.base(); } + + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() <= __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() <= __rhs.base(); } + + template<typename _IteratorL, typename _IteratorR, typename _Container> + inline bool + operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + noexcept + { return __lhs.base() >= __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline bool + operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() >= __rhs.base(); } + + + + + + template<typename _IteratorL, typename _IteratorR, typename _Container> + + + inline auto + operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept + -> decltype(__lhs.base() - __rhs.base()) + + + + + + { return __lhs.base() - __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline typename __normal_iterator<_Iterator, _Container>::difference_type + operator-(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + noexcept + { return __lhs.base() - __rhs.base(); } + + template<typename _Iterator, typename _Container> + inline __normal_iterator<_Iterator, _Container> + operator+(typename __normal_iterator<_Iterator, _Container>::difference_type + __n, const __normal_iterator<_Iterator, _Container>& __i) + noexcept + { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } + + +} + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 958 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_iterator.h" 3 + template<typename _Iterator> + class move_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + typedef typename __traits_type::reference __base_ref; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + + typedef _Iterator pointer; + + + typedef typename conditional<is_reference<__base_ref>::value, + typename remove_reference<__base_ref>::type&&, + __base_ref>::type reference; + + move_iterator() + : _M_current() { } + + explicit + move_iterator(iterator_type __i) + : _M_current(__i) { } + + template<typename _Iter> + move_iterator(const move_iterator<_Iter>& __i) + : _M_current(__i.base()) { } + + iterator_type + base() const + { return _M_current; } + + reference + operator*() const + { return static_cast<reference>(*_M_current); } + + pointer + operator->() const + { return _M_current; } + + move_iterator& + operator++() + { + ++_M_current; + return *this; + } + + move_iterator + operator++(int) + { + move_iterator __tmp = *this; + ++_M_current; + return __tmp; + } + + move_iterator& + operator--() + { + --_M_current; + return *this; + } + + move_iterator + operator--(int) + { + move_iterator __tmp = *this; + --_M_current; + return __tmp; + } + + move_iterator + operator+(difference_type __n) const + { return move_iterator(_M_current + __n); } + + move_iterator& + operator+=(difference_type __n) + { + _M_current += __n; + return *this; + } + + move_iterator + operator-(difference_type __n) const + { return move_iterator(_M_current - __n); } + + move_iterator& + operator-=(difference_type __n) + { + _M_current -= __n; + return *this; + } + + reference + operator[](difference_type __n) const + { return std::move(_M_current[__n]); } + }; + + + + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator==(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __x.base() == __y.base(); } + + template<typename _Iterator> + inline bool + operator==(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __x.base() == __y.base(); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator!=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__x == __y); } + + template<typename _Iterator> + inline bool + operator!=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__x == __y); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator<(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __x.base() < __y.base(); } + + template<typename _Iterator> + inline bool + operator<(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __x.base() < __y.base(); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator<=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__y < __x); } + + template<typename _Iterator> + inline bool + operator<=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__y < __x); } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator>(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __y < __x; } + + template<typename _Iterator> + inline bool + operator>(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __y < __x; } + + template<typename _IteratorL, typename _IteratorR> + inline bool + operator>=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__x < __y); } + + template<typename _Iterator> + inline bool + operator>=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__x < __y); } + + + template<typename _IteratorL, typename _IteratorR> + inline auto + operator-(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + -> decltype(__x.base() - __y.base()) + { return __x.base() - __y.base(); } + + template<typename _Iterator> + inline auto + operator-(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + -> decltype(__x.base() - __y.base()) + { return __x.base() - __y.base(); } + + template<typename _Iterator> + inline move_iterator<_Iterator> + operator+(typename move_iterator<_Iterator>::difference_type __n, + const move_iterator<_Iterator>& __x) + { return __x + __n; } + + template<typename _Iterator> + inline move_iterator<_Iterator> + make_move_iterator(_Iterator __i) + { return move_iterator<_Iterator>(__i); } + + template<typename _Iterator, typename _ReturnType + = typename conditional<__move_if_noexcept_cond + <typename iterator_traits<_Iterator>::value_type>::value, + _Iterator, move_iterator<_Iterator>>::type> + inline _ReturnType + __make_move_if_noexcept_iterator(_Iterator __i) + { return _ReturnType(__i); } + + + + +} +# 68 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/predefined_ops.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/predefined_ops.h" 3 +namespace __gnu_cxx +{ +namespace __ops +{ + struct _Iter_less_iter + { + template<typename _Iterator1, typename _Iterator2> + constexpr + bool + operator()(_Iterator1 __it1, _Iterator2 __it2) const + { return *__it1 < *__it2; } + }; + constexpr + inline _Iter_less_iter + __iter_less_iter() + { return _Iter_less_iter(); } + + struct _Iter_less_val + { + template<typename _Iterator, typename _Value> + bool + operator()(_Iterator __it, _Value& __val) const + { return *__it < __val; } + }; + + inline _Iter_less_val + __iter_less_val() + { return _Iter_less_val(); } + + inline _Iter_less_val + __iter_comp_val(_Iter_less_iter) + { return _Iter_less_val(); } + + struct _Val_less_iter + { + template<typename _Value, typename _Iterator> + bool + operator()(_Value& __val, _Iterator __it) const + { return __val < *__it; } + }; + + inline _Val_less_iter + __val_less_iter() + { return _Val_less_iter(); } + + inline _Val_less_iter + __val_comp_iter(_Iter_less_iter) + { return _Val_less_iter(); } + + struct _Iter_equal_to_iter + { + template<typename _Iterator1, typename _Iterator2> + bool + operator()(_Iterator1 __it1, _Iterator2 __it2) const + { return *__it1 == *__it2; } + }; + + inline _Iter_equal_to_iter + __iter_equal_to_iter() + { return _Iter_equal_to_iter(); } + + struct _Iter_equal_to_val + { + template<typename _Iterator, typename _Value> + bool + operator()(_Iterator __it, _Value& __val) const + { return *__it == __val; } + }; + + inline _Iter_equal_to_val + __iter_equal_to_val() + { return _Iter_equal_to_val(); } + + inline _Iter_equal_to_val + __iter_comp_val(_Iter_equal_to_iter) + { return _Iter_equal_to_val(); } + + template<typename _Compare> + struct _Iter_comp_iter + { + _Compare _M_comp; + constexpr + _Iter_comp_iter(_Compare __comp) + : _M_comp(__comp) + { } + + template<typename _Iterator1, typename _Iterator2> + constexpr + bool + operator()(_Iterator1 __it1, _Iterator2 __it2) + { return bool(_M_comp(*__it1, *__it2)); } + }; + + template<typename _Compare> + constexpr + inline _Iter_comp_iter<_Compare> + __iter_comp_iter(_Compare __comp) + { return _Iter_comp_iter<_Compare>(__comp); } + + template<typename _Compare> + struct _Iter_comp_val + { + _Compare _M_comp; + + _Iter_comp_val(_Compare __comp) + : _M_comp(__comp) + { } + + template<typename _Iterator, typename _Value> + bool + operator()(_Iterator __it, _Value& __val) + { return bool(_M_comp(*__it, __val)); } + }; + + template<typename _Compare> + inline _Iter_comp_val<_Compare> + __iter_comp_val(_Compare __comp) + { return _Iter_comp_val<_Compare>(__comp); } + + template<typename _Compare> + inline _Iter_comp_val<_Compare> + __iter_comp_val(_Iter_comp_iter<_Compare> __comp) + { return _Iter_comp_val<_Compare>(__comp._M_comp); } + + template<typename _Compare> + struct _Val_comp_iter + { + _Compare _M_comp; + + _Val_comp_iter(_Compare __comp) + : _M_comp(__comp) + { } + + template<typename _Value, typename _Iterator> + bool + operator()(_Value& __val, _Iterator __it) + { return bool(_M_comp(__val, *__it)); } + }; + + template<typename _Compare> + inline _Val_comp_iter<_Compare> + __val_comp_iter(_Compare __comp) + { return _Val_comp_iter<_Compare>(__comp); } + + template<typename _Compare> + inline _Val_comp_iter<_Compare> + __val_comp_iter(_Iter_comp_iter<_Compare> __comp) + { return _Val_comp_iter<_Compare>(__comp._M_comp); } + + template<typename _Value> + struct _Iter_equals_val + { + _Value& _M_value; + + _Iter_equals_val(_Value& __value) + : _M_value(__value) + { } + + template<typename _Iterator> + bool + operator()(_Iterator __it) + { return *__it == _M_value; } + }; + + template<typename _Value> + inline _Iter_equals_val<_Value> + __iter_equals_val(_Value& __val) + { return _Iter_equals_val<_Value>(__val); } + + template<typename _Iterator1> + struct _Iter_equals_iter + { + typename std::iterator_traits<_Iterator1>::reference _M_ref; + + _Iter_equals_iter(_Iterator1 __it1) + : _M_ref(*__it1) + { } + + template<typename _Iterator2> + bool + operator()(_Iterator2 __it2) + { return *__it2 == _M_ref; } + }; + + template<typename _Iterator> + inline _Iter_equals_iter<_Iterator> + __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) + { return _Iter_equals_iter<_Iterator>(__it); } + + template<typename _Predicate> + struct _Iter_pred + { + _Predicate _M_pred; + + _Iter_pred(_Predicate __pred) + : _M_pred(__pred) + { } + + template<typename _Iterator> + bool + operator()(_Iterator __it) + { return bool(_M_pred(*__it)); } + }; + + template<typename _Predicate> + inline _Iter_pred<_Predicate> + __pred_iter(_Predicate __pred) + { return _Iter_pred<_Predicate>(__pred); } + + template<typename _Compare, typename _Value> + struct _Iter_comp_to_val + { + _Compare _M_comp; + _Value& _M_value; + + _Iter_comp_to_val(_Compare __comp, _Value& __value) + : _M_comp(__comp), _M_value(__value) + { } + + template<typename _Iterator> + bool + operator()(_Iterator __it) + { return bool(_M_comp(*__it, _M_value)); } + }; + + template<typename _Compare, typename _Value> + _Iter_comp_to_val<_Compare, _Value> + __iter_comp_val(_Compare __comp, _Value &__val) + { return _Iter_comp_to_val<_Compare, _Value>(__comp, __val); } + + template<typename _Compare, typename _Iterator1> + struct _Iter_comp_to_iter + { + _Compare _M_comp; + typename std::iterator_traits<_Iterator1>::reference _M_ref; + + _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) + : _M_comp(__comp), _M_ref(*__it1) + { } + + template<typename _Iterator2> + bool + operator()(_Iterator2 __it2) + { return bool(_M_comp(*__it2, _M_ref)); } + }; + + template<typename _Compare, typename _Iterator> + inline _Iter_comp_to_iter<_Compare, _Iterator> + __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) + { return _Iter_comp_to_iter<_Compare, _Iterator>(__comp._M_comp, __it); } + + template<typename _Predicate> + struct _Iter_negate + { + _Predicate _M_pred; + + _Iter_negate(_Predicate __pred) + : _M_pred(__pred) + { } + + template<typename _Iterator> + bool + operator()(_Iterator __it) + { return !bool(_M_pred(*__it)); } + }; + + template<typename _Predicate> + inline _Iter_negate<_Predicate> + __negate(_Iter_pred<_Predicate> __pred) + { return _Iter_negate<_Predicate>(__pred._M_pred); } + +} +} +# 72 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 118 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + inline void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + + + + +# 148 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + swap(*__a, *__b); + + } +# 164 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + _ForwardIterator2 + swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2) + { + + + + + + ; + + for (; __first1 != __last1; ++__first1, ++__first2) + std::iter_swap(__first1, __first2); + return __first2; + } +# 192 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _Tp> + constexpr + inline const _Tp& + min(const _Tp& __a, const _Tp& __b) + { + + + + if (__b < __a) + return __b; + return __a; + } +# 216 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _Tp> + constexpr + inline const _Tp& + max(const _Tp& __a, const _Tp& __b) + { + + + + if (__a < __b) + return __b; + return __a; + } +# 240 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _Tp, typename _Compare> + constexpr + inline const _Tp& + min(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + + if (__comp(__b, __a)) + return __b; + return __a; + } +# 262 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _Tp, typename _Compare> + constexpr + inline const _Tp& + max(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + + if (__comp(__a, __b)) + return __b; + return __a; + } + + + + template<typename _Iterator> + struct _Niter_base + : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> + { }; + + template<typename _Iterator> + inline typename _Niter_base<_Iterator>::iterator_type + __niter_base(_Iterator __it) + { return std::_Niter_base<_Iterator>::_S_base(__it); } + + + template<typename _Iterator> + struct _Miter_base + : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value> + { }; + + template<typename _Iterator> + inline typename _Miter_base<_Iterator>::iterator_type + __miter_base(_Iterator __it) + { return std::_Miter_base<_Iterator>::_S_base(__it); } + + + + + + + + template<bool, bool, typename> + struct __copy_move + { + template<typename _II, typename _OI> + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { + for (; __first != __last; ++__result, ++__first) + *__result = *__first; + return __result; + } + }; + + + template<typename _Category> + struct __copy_move<true, false, _Category> + { + template<typename _II, typename _OI> + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { + for (; __first != __last; ++__result, ++__first) + *__result = std::move(*__first); + return __result; + } + }; + + + template<> + struct __copy_move<false, false, random_access_iterator_tag> + { + template<typename _II, typename _OI> + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { + typedef typename iterator_traits<_II>::difference_type _Distance; + for(_Distance __n = __last - __first; __n > 0; --__n) + { + *__result = *__first; + ++__first; + ++__result; + } + return __result; + } + }; + + + template<> + struct __copy_move<true, false, random_access_iterator_tag> + { + template<typename _II, typename _OI> + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { + typedef typename iterator_traits<_II>::difference_type _Distance; + for(_Distance __n = __last - __first; __n > 0; --__n) + { + *__result = std::move(*__first); + ++__first; + ++__result; + } + return __result; + } + }; + + + template<bool _IsMove> + struct __copy_move<_IsMove, true, random_access_iterator_tag> + { + template<typename _Tp> + static _Tp* + __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) + { + + + static_assert( is_copy_assignable<_Tp>::value, + "type is not assignable" ); + + const ptrdiff_t _Num = __last - __first; + if (_Num) + __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); + return __result + _Num; + } + }; + + template<bool _IsMove, typename _II, typename _OI> + inline _OI + __copy_move_a(_II __first, _II __last, _OI __result) + { + typedef typename iterator_traits<_II>::value_type _ValueTypeI; + typedef typename iterator_traits<_OI>::value_type _ValueTypeO; + typedef typename iterator_traits<_II>::iterator_category _Category; + const bool __simple = (__is_trivial(_ValueTypeI) + && __is_pointer<_II>::__value + && __is_pointer<_OI>::__value + && __are_same<_ValueTypeI, _ValueTypeO>::__value); + + return std::__copy_move<_IsMove, __simple, + _Category>::__copy_m(__first, __last, __result); + } + + + + template<typename _CharT> + struct char_traits; + + template<typename _CharT, typename _Traits> + class istreambuf_iterator; + + template<typename _CharT, typename _Traits> + class ostreambuf_iterator; + + template<bool _IsMove, typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type + __copy_move_a2(_CharT*, _CharT*, + ostreambuf_iterator<_CharT, char_traits<_CharT> >); + + template<bool _IsMove, typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type + __copy_move_a2(const _CharT*, const _CharT*, + ostreambuf_iterator<_CharT, char_traits<_CharT> >); + + template<bool _IsMove, typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + _CharT*>::__type + __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, + istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); + + template<bool _IsMove, typename _II, typename _OI> + inline _OI + __copy_move_a2(_II __first, _II __last, _OI __result) + { + return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), + std::__niter_base(__last), + std::__niter_base(__result))); + } +# 458 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II, typename _OI> + inline _OI + copy(_II __first, _II __last, _OI __result) + { + + + + + ; + + return (std::__copy_move_a2<__is_move_iterator<_II>::__value> + (std::__miter_base(__first), std::__miter_base(__last), + __result)); + } +# 491 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II, typename _OI> + inline _OI + move(_II __first, _II __last, _OI __result) + { + + + + + ; + + return std::__copy_move_a2<true>(std::__miter_base(__first), + std::__miter_base(__last), __result); + } + + + + + + + template<bool, bool, typename> + struct __copy_move_backward + { + template<typename _BI1, typename _BI2> + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { + while (__first != __last) + *--__result = *--__last; + return __result; + } + }; + + + template<typename _Category> + struct __copy_move_backward<true, false, _Category> + { + template<typename _BI1, typename _BI2> + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { + while (__first != __last) + *--__result = std::move(*--__last); + return __result; + } + }; + + + template<> + struct __copy_move_backward<false, false, random_access_iterator_tag> + { + template<typename _BI1, typename _BI2> + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { + typename iterator_traits<_BI1>::difference_type __n; + for (__n = __last - __first; __n > 0; --__n) + *--__result = *--__last; + return __result; + } + }; + + + template<> + struct __copy_move_backward<true, false, random_access_iterator_tag> + { + template<typename _BI1, typename _BI2> + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { + typename iterator_traits<_BI1>::difference_type __n; + for (__n = __last - __first; __n > 0; --__n) + *--__result = std::move(*--__last); + return __result; + } + }; + + + template<bool _IsMove> + struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> + { + template<typename _Tp> + static _Tp* + __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) + { + + + static_assert( is_copy_assignable<_Tp>::value, + "type is not assignable" ); + + const ptrdiff_t _Num = __last - __first; + if (_Num) + __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); + return __result - _Num; + } + }; + + template<bool _IsMove, typename _BI1, typename _BI2> + inline _BI2 + __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) + { + typedef typename iterator_traits<_BI1>::value_type _ValueType1; + typedef typename iterator_traits<_BI2>::value_type _ValueType2; + typedef typename iterator_traits<_BI1>::iterator_category _Category; + const bool __simple = (__is_trivial(_ValueType1) + && __is_pointer<_BI1>::__value + && __is_pointer<_BI2>::__value + && __are_same<_ValueType1, _ValueType2>::__value); + + return std::__copy_move_backward<_IsMove, __simple, + _Category>::__copy_move_b(__first, + __last, + __result); + } + + template<bool _IsMove, typename _BI1, typename _BI2> + inline _BI2 + __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) + { + return _BI2(std::__copy_move_backward_a<_IsMove> + (std::__niter_base(__first), std::__niter_base(__last), + std::__niter_base(__result))); + } +# 632 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _BI1, typename _BI2> + inline _BI2 + copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) + { + + + + + + + ; + + return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> + (std::__miter_base(__first), std::__miter_base(__last), + __result)); + } +# 668 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _BI1, typename _BI2> + inline _BI2 + move_backward(_BI1 __first, _BI1 __last, _BI2 __result) + { + + + + + + + ; + + return std::__copy_move_backward_a2<true>(std::__miter_base(__first), + std::__miter_base(__last), + __result); + } + + + + + + + template<typename _ForwardIterator, typename _Tp> + inline typename + __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type + __fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __value) + { + for (; __first != __last; ++__first) + *__first = __value; + } + + template<typename _ForwardIterator, typename _Tp> + inline typename + __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type + __fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __value) + { + const _Tp __tmp = __value; + for (; __first != __last; ++__first) + *__first = __tmp; + } + + + template<typename _Tp> + inline typename + __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type + __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) + { + const _Tp __tmp = __c; + if (const size_t __len = __last - __first) + __builtin_memset(__first, static_cast<unsigned char>(__tmp), __len); + } +# 734 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline void + fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) + { + + + + ; + + std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), + __value); + } + + template<typename _OutputIterator, typename _Size, typename _Tp> + inline typename + __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type + __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) + { + for (__decltype(__n + 0) __niter = __n; + __niter > 0; --__niter, ++__first) + *__first = __value; + return __first; + } + + template<typename _OutputIterator, typename _Size, typename _Tp> + inline typename + __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type + __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) + { + const _Tp __tmp = __value; + for (__decltype(__n + 0) __niter = __n; + __niter > 0; --__niter, ++__first) + *__first = __tmp; + return __first; + } + + template<typename _Size, typename _Tp> + inline typename + __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type + __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) + { + std::__fill_a(__first, __first + __n, __c); + return __first + __n; + } +# 794 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _OI, typename _Size, typename _Tp> + inline _OI + fill_n(_OI __first, _Size __n, const _Tp& __value) + { + + + + return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); + } + + template<bool _BoolType> + struct __equal + { + template<typename _II1, typename _II2> + static bool + equal(_II1 __first1, _II1 __last1, _II2 __first2) + { + for (; __first1 != __last1; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + return false; + return true; + } + }; + + template<> + struct __equal<true> + { + template<typename _Tp> + static bool + equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) + { + if (const size_t __len = (__last1 - __first1)) + return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); + return true; + } + }; + + template<typename _II1, typename _II2> + inline bool + __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) + { + typedef typename iterator_traits<_II1>::value_type _ValueType1; + typedef typename iterator_traits<_II2>::value_type _ValueType2; + const bool __simple = ((__is_integer<_ValueType1>::__value + || __is_pointer<_ValueType1>::__value) + && __is_pointer<_II1>::__value + && __is_pointer<_II2>::__value + && __are_same<_ValueType1, _ValueType2>::__value); + + return std::__equal<__simple>::equal(__first1, __last1, __first2); + } + + template<typename, typename> + struct __lc_rai + { + template<typename _II1, typename _II2> + static _II1 + __newlast1(_II1, _II1 __last1, _II2, _II2) + { return __last1; } + + template<typename _II> + static bool + __cnd2(_II __first, _II __last) + { return __first != __last; } + }; + + template<> + struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag> + { + template<typename _RAI1, typename _RAI2> + static _RAI1 + __newlast1(_RAI1 __first1, _RAI1 __last1, + _RAI2 __first2, _RAI2 __last2) + { + const typename iterator_traits<_RAI1>::difference_type + __diff1 = __last1 - __first1; + const typename iterator_traits<_RAI2>::difference_type + __diff2 = __last2 - __first2; + return __diff2 < __diff1 ? __first1 + __diff2 : __last1; + } + + template<typename _RAI> + static bool + __cnd2(_RAI, _RAI) + { return true; } + }; + + template<typename _II1, typename _II2, typename _Compare> + bool + __lexicographical_compare_impl(_II1 __first1, _II1 __last1, + _II2 __first2, _II2 __last2, + _Compare __comp) + { + typedef typename iterator_traits<_II1>::iterator_category _Category1; + typedef typename iterator_traits<_II2>::iterator_category _Category2; + typedef std::__lc_rai<_Category1, _Category2> __rai_type; + + __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); + for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); + ++__first1, ++__first2) + { + if (__comp(__first1, __first2)) + return true; + if (__comp(__first2, __first1)) + return false; + } + return __first1 == __last1 && __first2 != __last2; + } + + template<bool _BoolType> + struct __lexicographical_compare + { + template<typename _II1, typename _II2> + static bool __lc(_II1, _II1, _II2, _II2); + }; + + template<bool _BoolType> + template<typename _II1, typename _II2> + bool + __lexicographical_compare<_BoolType>:: + __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) + { + return std::__lexicographical_compare_impl(__first1, __last1, + __first2, __last2, + __gnu_cxx::__ops::__iter_less_iter()); + } + + template<> + struct __lexicographical_compare<true> + { + template<typename _Tp, typename _Up> + static bool + __lc(const _Tp* __first1, const _Tp* __last1, + const _Up* __first2, const _Up* __last2) + { + const size_t __len1 = __last1 - __first1; + const size_t __len2 = __last2 - __first2; + if (const size_t __len = std::min(__len1, __len2)) + if (int __result = __builtin_memcmp(__first1, __first2, __len)) + return __result < 0; + return __len1 < __len2; + } + }; + + template<typename _II1, typename _II2> + inline bool + __lexicographical_compare_aux(_II1 __first1, _II1 __last1, + _II2 __first2, _II2 __last2) + { + typedef typename iterator_traits<_II1>::value_type _ValueType1; + typedef typename iterator_traits<_II2>::value_type _ValueType2; + const bool __simple = + (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value + && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed + && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed + && __is_pointer<_II1>::__value + && __is_pointer<_II2>::__value); + + return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, + __first2, __last2); + } + + template<typename _ForwardIterator, typename _Tp, typename _Compare> + _ForwardIterator + __lower_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + _DistanceType __len = std::distance(__first, __last); + + while (__len > 0) + { + _DistanceType __half = __len >> 1; + _ForwardIterator __middle = __first; + std::advance(__middle, __half); + if (__comp(__middle, __val)) + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + else + __len = __half; + } + return __first; + } +# 994 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline _ForwardIterator + lower_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { + + + + + ; + + return std::__lower_bound(__first, __last, __val, + __gnu_cxx::__ops::__iter_less_val()); + } + + + + inline constexpr int + __lg(int __n) + { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } + + inline constexpr unsigned + __lg(unsigned __n) + { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } + + inline constexpr long + __lg(long __n) + { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } + + inline constexpr unsigned long + __lg(unsigned long __n) + { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } + + inline constexpr long long + __lg(long long __n) + { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } + + inline constexpr unsigned long long + __lg(unsigned long long __n) + { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } + + + + +# 1051 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II1, typename _II2> + inline bool + equal(_II1 __first1, _II1 __last1, _II2 __first2) + { + + + + + + + ; + + return std::__equal_aux(std::__niter_base(__first1), + std::__niter_base(__last1), + std::__niter_base(__first2)); + } +# 1083 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> + inline bool + equal(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _BinaryPredicate __binary_pred) + { + + + + ; + + for (; __first1 != __last1; ++__first1, ++__first2) + if (!bool(__binary_pred(*__first1, *__first2))) + return false; + return true; + } +# 1116 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II1, typename _II2> + inline bool + equal(_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<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; + if (_RAIters()) + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 != __d2) + return false; + return std::equal(__first1, __last1, __first2); + } + + for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + return false; + return __first1 == __last1 && __first2 == __last2; + } +# 1164 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> + inline bool + equal(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) + { + + + + ; + ; + + using _RATag = random_access_iterator_tag; + using _Cat1 = typename iterator_traits<_IIter1>::iterator_category; + using _Cat2 = typename iterator_traits<_IIter2>::iterator_category; + using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; + if (_RAIters()) + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 != __d2) + return false; + return std::equal(__first1, __last1, __first2, + __binary_pred); + } + + for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) + if (!bool(__binary_pred(*__first1, *__first2))) + return false; + return __first1 == __last1 && __first2 == __last2; + } +# 1211 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II1, typename _II2> + inline bool + lexicographical_compare(_II1 __first1, _II1 __last1, + _II2 __first2, _II2 __last2) + { + + + + + + + + + + ; + ; + + return std::__lexicographical_compare_aux(std::__niter_base(__first1), + std::__niter_base(__last1), + std::__niter_base(__first2), + std::__niter_base(__last2)); + } +# 1247 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _II1, typename _II2, typename _Compare> + inline bool + lexicographical_compare(_II1 __first1, _II1 __last1, + _II2 __first2, _II2 __last2, _Compare __comp) + { + + + + ; + ; + + return std::__lexicographical_compare_impl + (__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _BinaryPredicate> + pair<_InputIterator1, _InputIterator2> + __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _BinaryPredicate __binary_pred) + { + while (__first1 != __last1 && __binary_pred(__first1, __first2)) + { + ++__first1; + ++__first2; + } + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + } +# 1290 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _InputIterator1, typename _InputIterator2> + inline pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2) + { + + + + + + + ; + + return std::__mismatch(__first1, __last1, __first2, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 1323 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _BinaryPredicate> + inline pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _BinaryPredicate __binary_pred) + { + + + + ; + + return std::__mismatch(__first1, __last1, __first2, + __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); + } + + + + template<typename _InputIterator1, typename _InputIterator2, + typename _BinaryPredicate> + pair<_InputIterator1, _InputIterator2> + __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _BinaryPredicate __binary_pred) + { + while (__first1 != __last1 && __first2 != __last2 + && __binary_pred(__first1, __first2)) + { + ++__first1; + ++__first2; + } + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + } +# 1370 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _InputIterator1, typename _InputIterator2> + inline pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2) + { + + + + + + + ; + ; + + return std::__mismatch(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 1405 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algobase.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _BinaryPredicate> + inline pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _BinaryPredicate __binary_pred) + { + + + + ; + ; + + return std::__mismatch(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); + } + + + +} +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/algorithm" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +# 72 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +# 1 "/mnt/odroid-c2/usr/include/stdlib.h" 1 3 4 +# 32 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 33 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 + +extern "C" { + + + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4 +# 50 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/waitflags.h" 3 4 +typedef enum +{ + P_ALL, + P_PID, + P_PGID +} idtype_t; +# 42 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4 +# 64 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/endian.h" 1 3 4 +# 36 "/mnt/odroid-c2/usr/include/endian.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4 +# 37 "/mnt/odroid-c2/usr/include/endian.h" 2 3 4 +# 60 "/mnt/odroid-c2/usr/include/endian.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; + + + + + + + +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; +# 121 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4 +# 122 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 + + +typedef unsigned long int __dev_t; +typedef unsigned int __uid_t; +typedef unsigned int __gid_t; +typedef unsigned long int __ino_t; +typedef unsigned long int __ino64_t; +typedef unsigned int __mode_t; +typedef unsigned int __nlink_t; +typedef long int __off_t; +typedef long int __off64_t; +typedef int __pid_t; +typedef struct { int __val[2]; } __fsid_t; +typedef long int __clock_t; +typedef unsigned long int __rlim_t; +typedef unsigned long int __rlim64_t; +typedef unsigned int __id_t; +typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t; + +typedef int __daddr_t; +typedef int __key_t; + + +typedef int __clockid_t; + + +typedef void * __timer_t; + + +typedef int __blksize_t; + + + + +typedef long int __blkcnt_t; +typedef long int __blkcnt64_t; + + +typedef unsigned long int __fsblkcnt_t; +typedef unsigned long int __fsblkcnt64_t; + + +typedef unsigned long int __fsfilcnt_t; +typedef unsigned long int __fsfilcnt64_t; + + +typedef long int __fsword_t; + +typedef long int __ssize_t; + + +typedef long int __syscall_slong_t; + +typedef unsigned long int __syscall_ulong_t; + + + +typedef __off64_t __loff_t; +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + + +typedef long int __intptr_t; + + +typedef unsigned int __socklen_t; +# 28 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 2 3 4 + + + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap-16.h" 1 3 4 +# 35 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 2 3 4 +# 43 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 +static __inline unsigned int +__bswap_32 (unsigned int __bsx) +{ + return __builtin_bswap32 (__bsx); +} +# 74 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 +static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + return __builtin_bswap64 (__bsx); +} +# 61 "/mnt/odroid-c2/usr/include/endian.h" 2 3 4 +# 65 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 2 3 4 + +union wait + { + int w_status; + struct + { + + unsigned int __w_termsig:7; + unsigned int __w_coredump:1; + unsigned int __w_retcode:8; + unsigned int:16; + + + + + + + + } __wait_terminated; + struct + { + + unsigned int __w_stopval:8; + unsigned int __w_stopsig:8; + unsigned int:16; + + + + + + + } __wait_stopped; + }; +# 43 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 +# 95 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 + + +typedef struct + { + int quot; + int rem; + } div_t; + + + +typedef struct + { + long int quot; + long int rem; + } ldiv_t; + + + + + + + +__extension__ typedef struct + { + long long int quot; + long long int rem; + } lldiv_t; + + +# 139 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) throw () ; + + + + +extern double atof (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern int atoi (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ extern long long int atoll (const char *__nptr) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern double strtod (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern float strtof (const char *__restrict __nptr, + char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); + +extern long double strtold (const char *__restrict __nptr, + char **__restrict __endptr) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern long int strtol (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +extern unsigned long int strtoul (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + +__extension__ +extern long long int strtoq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtouq (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +__extension__ +extern long long int strtoll (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +__extension__ +extern unsigned long long int strtoull (const char *__restrict __nptr, + char **__restrict __endptr, int __base) + throw () __attribute__ ((__nonnull__ (1))); + +# 235 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/xlocale.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/xlocale.h" 3 4 +typedef struct __locale_struct +{ + + struct __locale_data *__locales[13]; + + + const unsigned short int *__ctype_b; + const int *__ctype_tolower; + const int *__ctype_toupper; + + + const char *__names[13]; +} *__locale_t; + + +typedef __locale_t locale_t; +# 236 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 + + + +extern long int strtol_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); + +extern unsigned long int strtoul_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern long long int strtoll_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern unsigned long long int strtoull_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 4))); + +extern double strtod_l (const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern float strtof_l (const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + +extern long double strtold_l (const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__leaf__)) atoi (const char *__nptr) throw () +{ + return (int) strtol (__nptr, (char **) __null, 10); +} +extern __inline __attribute__ ((__gnu_inline__)) long int +__attribute__ ((__leaf__)) atol (const char *__nptr) throw () +{ + return strtol (__nptr, (char **) __null, 10); +} + + + + +__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int +__attribute__ ((__leaf__)) atoll (const char *__nptr) throw () +{ + return strtoll (__nptr, (char **) __null, 10); +} + +# 305 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) throw () ; + + +extern long int a64l (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 +extern "C" { + + + + + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; + + + + +typedef __loff_t loff_t; + + + +typedef __ino_t ino_t; + + + + + + +typedef __ino64_t ino64_t; + + + + +typedef __dev_t dev_t; + + + + +typedef __gid_t gid_t; + + + + +typedef __mode_t mode_t; + + + + +typedef __nlink_t nlink_t; + + + + +typedef __uid_t uid_t; + + + + + +typedef __off_t off_t; + + + + + + +typedef __off64_t off64_t; + + + + +typedef __pid_t pid_t; + + + + + +typedef __id_t id_t; + + + + +typedef __ssize_t ssize_t; + + + + + +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + + + + + +typedef __key_t key_t; +# 132 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/time.h" 1 3 4 +# 57 "/mnt/odroid-c2/usr/include/time.h" 3 4 + + +typedef __clock_t clock_t; + + + +# 73 "/mnt/odroid-c2/usr/include/time.h" 3 4 + + +typedef __time_t time_t; + + + +# 91 "/mnt/odroid-c2/usr/include/time.h" 3 4 +typedef __clockid_t clockid_t; +# 103 "/mnt/odroid-c2/usr/include/time.h" 3 4 +typedef __timer_t timer_t; +# 133 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 + + + +typedef __useconds_t useconds_t; + + + +typedef __suseconds_t suseconds_t; + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 147 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; +# 194 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 +typedef int int8_t __attribute__ ((__mode__ (__QI__))); +typedef int int16_t __attribute__ ((__mode__ (__HI__))); +typedef int int32_t __attribute__ ((__mode__ (__SI__))); +typedef int int64_t __attribute__ ((__mode__ (__DI__))); + + +typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); +typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); +typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); +typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); + +typedef int register_t __attribute__ ((__mode__ (__word__))); +# 219 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4 +# 30 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4 +# 31 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sigset.h" 1 3 4 +# 22 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sigset.h" 3 4 +typedef int __sig_atomic_t; + + + + +typedef struct + { + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; + } __sigset_t; +# 34 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 + + + +typedef __sigset_t sigset_t; + + + + + +# 1 "/mnt/odroid-c2/usr/include/time.h" 1 3 4 +# 120 "/mnt/odroid-c2/usr/include/time.h" 3 4 +struct timespec + { + __time_t tv_sec; + __syscall_slong_t tv_nsec; + }; +# 44 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4 +# 30 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +# 46 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 +# 54 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +typedef long int __fd_mask; +# 64 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; + + + + + + } fd_set; + + + + + + +typedef __fd_mask fd_mask; +# 96 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +extern "C" { +# 106 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 118 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); +# 131 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 +} +# 220 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/sysmacros.h" 1 3 4 +# 24 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/sysmacros.h" 3 4 +extern "C" { + +__extension__ +extern unsigned int gnu_dev_major (unsigned long long int __dev) + throw () __attribute__ ((__const__)); +__extension__ +extern unsigned int gnu_dev_minor (unsigned long long int __dev) + throw () __attribute__ ((__const__)); +__extension__ +extern unsigned long long int gnu_dev_makedev (unsigned int __major, + unsigned int __minor) + throw () __attribute__ ((__const__)); + + +__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int +__attribute__ ((__leaf__)) gnu_dev_major (unsigned long long int __dev) throw () +{ + return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); +} + +__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int +__attribute__ ((__leaf__)) gnu_dev_minor (unsigned long long int __dev) throw () +{ + return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); +} + +__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned long long int +__attribute__ ((__leaf__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw () +{ + return ((__minor & 0xff) | ((__major & 0xfff) << 8) + | (((unsigned long long int) (__minor & ~0xff)) << 12) + | (((unsigned long long int) (__major & ~0xfff)) << 32)); +} + +} +# 223 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 + + + + + +typedef __blksize_t blksize_t; + + + + + + +typedef __blkcnt_t blkcnt_t; + + + +typedef __fsblkcnt_t fsblkcnt_t; + + + +typedef __fsfilcnt_t fsfilcnt_t; +# 262 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4 +# 38 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4 +typedef unsigned long int pthread_t; + + +union pthread_attr_t +{ + char __size[64]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + + + +typedef struct __pthread_internal_list +{ + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; + + + + +typedef union +{ + struct __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; + unsigned int __nusers; + int __kind; + int __spins; + __pthread_list_t __list; + + } __data; + char __size[48]; + long int __align; +} pthread_mutex_t; + + + + +typedef union +{ + char __size[8]; + long int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + long int __align; +} pthread_cond_t; + +typedef union +{ + char __size[8]; + int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + int __writer; + int __shared; + unsigned long int __pad1; + unsigned long int __pad2; + unsigned int __flags; + } __data; + char __size[56]; + long int __align; +} pthread_rwlock_t; + + + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[32]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[8]; + int __align; +} pthread_barrierattr_t; +# 271 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 + + +} +# 315 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 + + + + + + +extern long int random (void) throw (); + + +extern void srandom (unsigned int __seed) throw (); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + throw () __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int rand (void) throw (); + +extern void srand (unsigned int __seed) throw (); + + + + +extern int rand_r (unsigned int *__seed) throw (); + + + + + + + +extern double drand48 (void) throw (); +extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) throw (); +extern long int nrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) throw (); +extern long int jrand48 (unsigned short int __xsubi[3]) + throw () __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) throw (); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + throw () __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + __extension__ unsigned long long int __a; + + }; + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + + + + + +extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + throw () __attribute__ ((__malloc__)) ; + + + + + + + + + + +extern void *realloc (void *__ptr, size_t __size) + throw () __attribute__ ((__warn_unused_result__)); + +extern void free (void *__ptr) throw (); + + + + +extern void cfree (void *__ptr) throw (); + + + +# 1 "/mnt/odroid-c2/usr/include/alloca.h" 1 3 4 +# 24 "/mnt/odroid-c2/usr/include/alloca.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 25 "/mnt/odroid-c2/usr/include/alloca.h" 2 3 4 + +extern "C" { + + + + + +extern void *alloca (size_t __size) throw (); + + + + + +} +# 493 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 + + + + + +extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + +extern void *aligned_alloc (size_t __alignment, size_t __size) + throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ; + + + + +extern void abort (void) throw () __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); + + + + +extern "C++" int at_quick_exit (void (*__func) (void)) + throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); + + + + + + + + + +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern void exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + +extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + + + +extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); + + + + + + +extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) ; + + + + + +extern char *secure_getenv (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (const char *__name, const char *__value, int __replace) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern int clearenv (void) throw (); +# 606 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); +# 619 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 629 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 641 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ; +# 651 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkstemps64 (char *__template, int __suffixlen) + __attribute__ ((__nonnull__ (1))) ; +# 662 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; +# 673 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 683 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; +# 693 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkostemps (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; +# 705 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int mkostemps64 (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) ; + + + + + + + + + +extern int system (const char *__command) ; + + + + + + +extern char *canonicalize_file_name (const char *__name) + throw () __attribute__ ((__nonnull__ (1))) ; +# 733 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern char *realpath (const char *__restrict __name, + char *__restrict __resolved) throw () ; + + + + + + +typedef int (*__compar_fn_t) (const void *, const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + +typedef int (*__compar_d_fn_t) (const void *, const void *, void *); + + + + + +extern void *bsearch (const void *__key, const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 +# 19 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 3 4 +extern __inline __attribute__ ((__gnu_inline__)) void * +bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) +{ + size_t __l, __u, __idx; + const void *__p; + int __comparison; + + __l = 0; + __u = __nmemb; + while (__l < __u) + { + __idx = (__l + __u) / 2; + __p = (void *) (((const char *) __base) + (__idx * __size)); + __comparison = (*__compar) (__key, __p); + if (__comparison < 0) + __u = __idx; + else if (__comparison > 0) + __l = __idx + 1; + else + return (void *) __p; + } + + return __null; +} +# 760 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 + + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + +extern void qsort_r (void *__base, size_t __nmemb, size_t __size, + __compar_d_fn_t __compar, void *__arg) + __attribute__ ((__nonnull__ (1, 4))); + + + + +extern int abs (int __x) throw () __attribute__ ((__const__)) ; +extern long int labs (long int __x) throw () __attribute__ ((__const__)) ; + + + +__extension__ extern long long int llabs (long long int __x) + throw () __attribute__ ((__const__)) ; + + + + + + + +extern div_t div (int __numer, int __denom) + throw () __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + throw () __attribute__ ((__const__)) ; + + + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + throw () __attribute__ ((__const__)) ; + +# 811 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + throw () __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + throw () __attribute__ ((__nonnull__ (3))) ; + + + + +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + throw () __attribute__ ((__nonnull__ (3, 4, 5))); + + + + + + +extern int mblen (const char *__s, size_t __n) throw (); + + +extern int mbtowc (wchar_t *__restrict __pwc, + const char *__restrict __s, size_t __n) throw (); + + +extern int wctomb (char *__s, wchar_t __wchar) throw (); + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + const char *__restrict __s, size_t __n) throw (); + +extern size_t wcstombs (char *__restrict __s, + const wchar_t *__restrict __pwcs, size_t __n) + throw (); + + + + + + + + +extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) ; +# 898 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *const *__restrict __tokens, + char **__restrict __valuep) + throw () __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + +extern void setkey (const char *__key) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) throw (); + + + +extern int unlockpt (int __fd) throw (); + + + + +extern char *ptsname (int __fd) throw () ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + throw () __attribute__ ((__nonnull__ (1))); + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4 +# 24 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 3 4 + +extern __inline __attribute__ ((__gnu_inline__)) double +__attribute__ ((__leaf__)) atof (const char *__nptr) throw () +{ + return strtod (__nptr, (char **) __null); +} + +# 955 "/mnt/odroid-c2/usr/include/stdlib.h" 2 3 4 +# 967 "/mnt/odroid-c2/usr/include/stdlib.h" 3 4 +} +# 73 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 2 3 +# 114 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + using ::div_t; + using ::ldiv_t; + + using ::abort; + using ::abs; + using ::atexit; + + + using ::at_quick_exit; + + + using ::atof; + using ::atoi; + using ::atol; + using ::bsearch; + using ::calloc; + using ::div; + using ::exit; + using ::free; + using ::getenv; + using ::labs; + using ::ldiv; + using ::malloc; + + using ::mblen; + using ::mbstowcs; + using ::mbtowc; + + using ::qsort; + + + using ::quick_exit; + + + using ::rand; + using ::realloc; + using ::srand; + using ::strtod; + using ::strtol; + using ::strtoul; + using ::system; + + using ::wcstombs; + using ::wctomb; + + + + inline long + abs(long __i) { return __builtin_labs(__i); } + + inline ldiv_t + div(long __i, long __j) { return ldiv(__i, __j); } + + + + inline long long + abs(long long __x) { return __builtin_llabs (__x); } +# 195 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 + +} +# 209 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + using ::lldiv_t; + + + + + + using ::_Exit; + + + + 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; +# 241 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 + using ::atoll; + using ::strtoll; + using ::strtoull; + + using ::strtof; + using ::strtold; + + +} + +namespace std +{ + + using ::__gnu_cxx::lldiv_t; + + using ::__gnu_cxx::_Exit; + + using ::__gnu_cxx::llabs; + using ::__gnu_cxx::div; + using ::__gnu_cxx::lldiv; + + using ::__gnu_cxx::atoll; + using ::__gnu_cxx::strtof; + using ::__gnu_cxx::strtoll; + using ::__gnu_cxx::strtoull; + using ::__gnu_cxx::strtold; +} +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 194 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 3 + template<typename _IIter, typename _Predicate> + bool + all_of(_IIter, _IIter, _Predicate); + + template<typename _IIter, typename _Predicate> + bool + any_of(_IIter, _IIter, _Predicate); + + + template<typename _FIter, typename _Tp> + bool + binary_search(_FIter, _FIter, const _Tp&); + + template<typename _FIter, typename _Tp, typename _Compare> + bool + binary_search(_FIter, _FIter, const _Tp&, _Compare); + + template<typename _IIter, typename _OIter> + _OIter + copy(_IIter, _IIter, _OIter); + + template<typename _BIter1, typename _BIter2> + _BIter2 + copy_backward(_BIter1, _BIter1, _BIter2); + + + template<typename _IIter, typename _OIter, typename _Predicate> + _OIter + copy_if(_IIter, _IIter, _OIter, _Predicate); + + template<typename _IIter, typename _Size, typename _OIter> + _OIter + copy_n(_IIter, _Size, _OIter); + + + + + + template<typename _FIter, typename _Tp> + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&); + + template<typename _FIter, typename _Tp, typename _Compare> + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&, _Compare); + + template<typename _FIter, typename _Tp> + void + fill(_FIter, _FIter, const _Tp&); + + template<typename _OIter, typename _Size, typename _Tp> + _OIter + fill_n(_OIter, _Size, const _Tp&); + + + + template<typename _FIter1, typename _FIter2> + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2); + + template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + + + + + template<typename _IIter, typename _Predicate> + _IIter + find_if_not(_IIter, _IIter, _Predicate); + + + + + + + template<typename _IIter1, typename _IIter2> + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2); + + template<typename _IIter1, typename _IIter2, typename _Compare> + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template<typename _BIter> + void + inplace_merge(_BIter, _BIter, _BIter); + + template<typename _BIter, typename _Compare> + void + inplace_merge(_BIter, _BIter, _BIter, _Compare); + + + template<typename _RAIter> + bool + is_heap(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + bool + is_heap(_RAIter, _RAIter, _Compare); + + template<typename _RAIter> + _RAIter + is_heap_until(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + _RAIter + is_heap_until(_RAIter, _RAIter, _Compare); + + template<typename _IIter, typename _Predicate> + bool + is_partitioned(_IIter, _IIter, _Predicate); + + template<typename _FIter1, typename _FIter2> + bool + is_permutation(_FIter1, _FIter1, _FIter2); + + template<typename _FIter1, typename _FIter2, + typename _BinaryPredicate> + bool + is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); + + template<typename _FIter> + bool + is_sorted(_FIter, _FIter); + + template<typename _FIter, typename _Compare> + bool + is_sorted(_FIter, _FIter, _Compare); + + template<typename _FIter> + _FIter + is_sorted_until(_FIter, _FIter); + + template<typename _FIter, typename _Compare> + _FIter + is_sorted_until(_FIter, _FIter, _Compare); + + + template<typename _FIter1, typename _FIter2> + void + iter_swap(_FIter1, _FIter2); + + template<typename _FIter, typename _Tp> + _FIter + lower_bound(_FIter, _FIter, const _Tp&); + + template<typename _FIter, typename _Tp, typename _Compare> + _FIter + lower_bound(_FIter, _FIter, const _Tp&, _Compare); + + template<typename _RAIter> + void + make_heap(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + make_heap(_RAIter, _RAIter, _Compare); + + template<typename _Tp> + constexpr + const _Tp& + max(const _Tp&, const _Tp&); + + template<typename _Tp, typename _Compare> + constexpr + const _Tp& + max(const _Tp&, const _Tp&, _Compare); + + + + + template<typename _Tp> + constexpr + const _Tp& + min(const _Tp&, const _Tp&); + + template<typename _Tp, typename _Compare> + constexpr + const _Tp& + min(const _Tp&, const _Tp&, _Compare); + + + + + template<typename _Tp> + constexpr + pair<const _Tp&, const _Tp&> + minmax(const _Tp&, const _Tp&); + + template<typename _Tp, typename _Compare> + constexpr + pair<const _Tp&, const _Tp&> + minmax(const _Tp&, const _Tp&, _Compare); + + template<typename _FIter> + constexpr + pair<_FIter, _FIter> + minmax_element(_FIter, _FIter); + + template<typename _FIter, typename _Compare> + constexpr + pair<_FIter, _FIter> + minmax_element(_FIter, _FIter, _Compare); + + template<typename _Tp> + constexpr + _Tp + min(initializer_list<_Tp>); + + template<typename _Tp, typename _Compare> + constexpr + _Tp + min(initializer_list<_Tp>, _Compare); + + template<typename _Tp> + constexpr + _Tp + max(initializer_list<_Tp>); + + template<typename _Tp, typename _Compare> + constexpr + _Tp + max(initializer_list<_Tp>, _Compare); + + template<typename _Tp> + constexpr + pair<_Tp, _Tp> + minmax(initializer_list<_Tp>); + + template<typename _Tp, typename _Compare> + constexpr + pair<_Tp, _Tp> + minmax(initializer_list<_Tp>, _Compare); + + + + + template<typename _BIter> + bool + next_permutation(_BIter, _BIter); + + template<typename _BIter, typename _Compare> + bool + next_permutation(_BIter, _BIter, _Compare); + + + template<typename _IIter, typename _Predicate> + bool + none_of(_IIter, _IIter, _Predicate); + + + + + + template<typename _IIter, typename _RAIter> + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); + + template<typename _IIter, typename _RAIter, typename _Compare> + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); + + + + + template<typename _IIter, typename _OIter1, + typename _OIter2, typename _Predicate> + pair<_OIter1, _OIter2> + partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); + + template<typename _FIter, typename _Predicate> + _FIter + partition_point(_FIter, _FIter, _Predicate); + + + template<typename _RAIter> + void + pop_heap(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + pop_heap(_RAIter, _RAIter, _Compare); + + template<typename _BIter> + bool + prev_permutation(_BIter, _BIter); + + template<typename _BIter, typename _Compare> + bool + prev_permutation(_BIter, _BIter, _Compare); + + template<typename _RAIter> + void + push_heap(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + push_heap(_RAIter, _RAIter, _Compare); + + + + template<typename _FIter, typename _Tp> + _FIter + remove(_FIter, _FIter, const _Tp&); + + template<typename _FIter, typename _Predicate> + _FIter + remove_if(_FIter, _FIter, _Predicate); + + template<typename _IIter, typename _OIter, typename _Tp> + _OIter + remove_copy(_IIter, _IIter, _OIter, const _Tp&); + + template<typename _IIter, typename _OIter, typename _Predicate> + _OIter + remove_copy_if(_IIter, _IIter, _OIter, _Predicate); + + + + template<typename _IIter, typename _OIter, typename _Tp> + _OIter + replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); + + template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp> + _OIter + replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); + + + + template<typename _BIter> + void + reverse(_BIter, _BIter); + + template<typename _BIter, typename _OIter> + _OIter + reverse_copy(_BIter, _BIter, _OIter); + + inline namespace _V2 + { + template<typename _FIter> + _FIter + rotate(_FIter, _FIter, _FIter); + } + + template<typename _FIter, typename _OIter> + _OIter + rotate_copy(_FIter, _FIter, _FIter, _OIter); +# 552 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/algorithmfwd.h" 3 + template<typename _RAIter, typename _UGenerator> + void + shuffle(_RAIter, _RAIter, _UGenerator&&); + + + template<typename _RAIter> + void + sort_heap(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + sort_heap(_RAIter, _RAIter, _Compare); + + template<typename _BIter, typename _Predicate> + _BIter + stable_partition(_BIter, _BIter, _Predicate); + + template<typename _Tp> + void + swap(_Tp&, _Tp&) + + noexcept(__and_<is_nothrow_move_constructible<_Tp>, + is_nothrow_move_assignable<_Tp>>::value) + + ; + + template<typename _Tp, size_t _Nm> + void + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) + + noexcept(noexcept(swap(*__a, *__b))) + + ; + + template<typename _FIter1, typename _FIter2> + _FIter2 + swap_ranges(_FIter1, _FIter1, _FIter2); + + + + template<typename _FIter> + _FIter + unique(_FIter, _FIter); + + template<typename _FIter, typename _BinaryPredicate> + _FIter + unique(_FIter, _FIter, _BinaryPredicate); + + + + template<typename _FIter, typename _Tp> + _FIter + upper_bound(_FIter, _FIter, const _Tp&); + + template<typename _FIter, typename _Tp, typename _Compare> + _FIter + upper_bound(_FIter, _FIter, const _Tp&, _Compare); + + + + + + template<typename _FIter> + _FIter + adjacent_find(_FIter, _FIter); + + template<typename _FIter, typename _BinaryPredicate> + _FIter + adjacent_find(_FIter, _FIter, _BinaryPredicate); + + template<typename _IIter, typename _Tp> + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&); + + template<typename _IIter, typename _Predicate> + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate); + + template<typename _IIter1, typename _IIter2> + bool + equal(_IIter1, _IIter1, _IIter2); + + template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> + bool + equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); + + template<typename _IIter, typename _Tp> + _IIter + find(_IIter, _IIter, const _Tp&); + + template<typename _FIter1, typename _FIter2> + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); + + template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template<typename _IIter, typename _Predicate> + _IIter + find_if(_IIter, _IIter, _Predicate); + + template<typename _IIter, typename _Funct> + _Funct + for_each(_IIter, _IIter, _Funct); + + template<typename _FIter, typename _Generator> + void + generate(_FIter, _FIter, _Generator); + + template<typename _OIter, typename _Size, typename _Generator> + _OIter + generate_n(_OIter, _Size, _Generator); + + template<typename _IIter1, typename _IIter2> + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); + + template<typename _IIter1, typename _IIter2, typename _Compare> + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template<typename _FIter> + constexpr + _FIter + max_element(_FIter, _FIter); + + template<typename _FIter, typename _Compare> + constexpr + _FIter + max_element(_FIter, _FIter, _Compare); + + template<typename _IIter1, typename _IIter2, typename _OIter> + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _Compare> + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template<typename _FIter> + constexpr + _FIter + min_element(_FIter, _FIter); + + template<typename _FIter, typename _Compare> + constexpr + _FIter + min_element(_FIter, _FIter, _Compare); + + template<typename _IIter1, typename _IIter2> + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2); + + template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); + + template<typename _RAIter> + void + nth_element(_RAIter, _RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + nth_element(_RAIter, _RAIter, _RAIter, _Compare); + + template<typename _RAIter> + void + partial_sort(_RAIter, _RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + partial_sort(_RAIter, _RAIter, _RAIter, _Compare); + + template<typename _BIter, typename _Predicate> + _BIter + partition(_BIter, _BIter, _Predicate); + + template<typename _RAIter> + void + random_shuffle(_RAIter, _RAIter); + + template<typename _RAIter, typename _Generator> + void + random_shuffle(_RAIter, _RAIter, + + _Generator&&); + + + + + template<typename _FIter, typename _Tp> + void + replace(_FIter, _FIter, const _Tp&, const _Tp&); + + template<typename _FIter, typename _Predicate, typename _Tp> + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&); + + template<typename _FIter1, typename _FIter2> + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2); + + template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template<typename _FIter, typename _Size, typename _Tp> + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&); + + template<typename _FIter, typename _Size, typename _Tp, + typename _BinaryPredicate> + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); + + template<typename _IIter1, typename _IIter2, typename _OIter> + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _Compare> + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template<typename _IIter1, typename _IIter2, typename _OIter> + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _Compare> + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template<typename _IIter1, typename _IIter2, typename _OIter> + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _Compare> + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, + _OIter, _Compare); + + template<typename _IIter1, typename _IIter2, typename _OIter> + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _Compare> + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template<typename _RAIter> + void + sort(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + sort(_RAIter, _RAIter, _Compare); + + template<typename _RAIter> + void + stable_sort(_RAIter, _RAIter); + + template<typename _RAIter, typename _Compare> + void + stable_sort(_RAIter, _RAIter, _Compare); + + template<typename _IIter, typename _OIter, typename _UnaryOperation> + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation); + + template<typename _IIter1, typename _IIter2, typename _OIter, + typename _BinaryOperation> + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); + + template<typename _IIter, typename _OIter> + _OIter + unique_copy(_IIter, _IIter, _OIter); + + template<typename _IIter, typename _OIter, typename _BinaryPredicate> + _OIter + unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); + + +} +# 61 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 1 3 +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<typename _RandomAccessIterator, typename _Distance, + typename _Compare> + _Distance + __is_heap_until(_RandomAccessIterator __first, _Distance __n, + _Compare __comp) + { + _Distance __parent = 0; + for (_Distance __child = 1; __child < __n; ++__child) + { + if (__comp(__first + __parent, __first + __child)) + return __child; + if ((__child & 1) == 0) + ++__parent; + } + return __n; + } + + + + template<typename _RandomAccessIterator, typename _Distance> + inline bool + __is_heap(_RandomAccessIterator __first, _Distance __n) + { + return std::__is_heap_until(__first, __n, + __gnu_cxx::__ops::__iter_less_iter()) == __n; + } + + template<typename _RandomAccessIterator, typename _Compare, + typename _Distance> + inline bool + __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) + { + return std::__is_heap_until(__first, __n, + __gnu_cxx::__ops::__iter_comp_iter(__comp)) == __n; + } + + template<typename _RandomAccessIterator> + inline bool + __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { return std::__is_heap(__first, std::distance(__first, __last)); } + + template<typename _RandomAccessIterator, typename _Compare> + inline bool + __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { return std::__is_heap(__first, __comp, std::distance(__first, __last)); } + + + + + template<typename _RandomAccessIterator, typename _Distance, typename _Tp, + typename _Compare> + void + __push_heap(_RandomAccessIterator __first, + _Distance __holeIndex, _Distance __topIndex, _Tp __value, + _Compare __comp) + { + _Distance __parent = (__holeIndex - 1) / 2; + while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) + { + *(__first + __holeIndex) = std::move(*(__first + __parent)); + __holeIndex = __parent; + __parent = (__holeIndex - 1) / 2; + } + *(__first + __holeIndex) = std::move(__value); + } +# 148 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline void + push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + + + + + ; + ; + + _ValueType __value = std::move(*(__last - 1)); + std::__push_heap(__first, _DistanceType((__last - __first) - 1), + _DistanceType(0), std::move(__value), + __gnu_cxx::__ops::__iter_less_val()); + } +# 182 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + + + + ; + ; + + _ValueType __value = std::move(*(__last - 1)); + std::__push_heap(__first, _DistanceType((__last - __first) - 1), + _DistanceType(0), std::move(__value), + __gnu_cxx::__ops::__iter_comp_val(__comp)); + } + + template<typename _RandomAccessIterator, typename _Distance, + typename _Tp, typename _Compare> + void + __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, + _Distance __len, _Tp __value, _Compare __comp) + { + const _Distance __topIndex = __holeIndex; + _Distance __secondChild = __holeIndex; + while (__secondChild < (__len - 1) / 2) + { + __secondChild = 2 * (__secondChild + 1); + if (__comp(__first + __secondChild, + __first + (__secondChild - 1))) + __secondChild--; + *(__first + __holeIndex) = std::move(*(__first + __secondChild)); + __holeIndex = __secondChild; + } + if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) + { + __secondChild = 2 * (__secondChild + 1); + *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) + ; + __holeIndex = __secondChild - 1; + } + std::__push_heap(__first, __holeIndex, __topIndex, + std::move(__value), + __gnu_cxx::__ops::__iter_comp_val(__comp)); + } + + template<typename _RandomAccessIterator, typename _Compare> + inline void + __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _RandomAccessIterator __result, _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + _ValueType __value = std::move(*__result); + *__result = std::move(*__first); + std::__adjust_heap(__first, _DistanceType(0), + _DistanceType(__last - __first), + std::move(__value), __comp); + } +# 261 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline void + pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + + + + + ; + ; + ; + + if (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } + } +# 295 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + pop_heap(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + + + + ; + ; + ; + + if (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + } + + template<typename _RandomAccessIterator, typename _Compare> + void + __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + if (__last - __first < 2) + return; + + const _DistanceType __len = __last - __first; + _DistanceType __parent = (__len - 2) / 2; + while (true) + { + _ValueType __value = std::move(*(__first + __parent)); + std::__adjust_heap(__first, __parent, __len, std::move(__value), + __comp); + if (__parent == 0) + return; + __parent--; + } + } +# 349 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline void + make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + + + ; + + std::__make_heap(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 374 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + + + + ; + + std::__make_heap(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _RandomAccessIterator, typename _Compare> + void + __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + while (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last, __comp); + } + } +# 408 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline void + sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + + + ; + ; + + std::__sort_heap(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 434 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + + + + ; + ; + + std::__sort_heap(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 460 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline _RandomAccessIterator + is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + + + ; + + return __first + + std::__is_heap_until(__first, std::distance(__first, __last), + __gnu_cxx::__ops::__iter_less_iter()); + } +# 487 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline _RandomAccessIterator + is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + + + + ; + + return __first + + std::__is_heap_until(__first, std::distance(__first, __last), + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 509 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator> + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { return std::is_heap_until(__first, __last) == __last; } +# 522 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_heap.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { return std::is_heap_until(__first, __last, __comp) == __last; } + + + +} +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 1 3 +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_construct.h" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_construct.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/new" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/new" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/new" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 3 + +#pragma GCC visibility push(default) + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_lockfree_defines.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_lockfree_defines.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_lockfree_defines.h" 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 2 3 + +extern "C++" { + +namespace std +{ +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 3 + class exception + { + public: + exception() noexcept { } + virtual ~exception() noexcept; + + + + virtual const char* what() const noexcept; + }; + + + + class bad_exception : public exception + { + public: + bad_exception() noexcept { } + + + + virtual ~bad_exception() noexcept; + + + virtual const char* what() const noexcept; + }; + + + typedef void (*terminate_handler) (); + + + typedef void (*unexpected_handler) (); + + + terminate_handler set_terminate(terminate_handler) noexcept; + + + + terminate_handler get_terminate() noexcept; + + + + + void terminate() noexcept __attribute__ ((__noreturn__)); + + + unexpected_handler set_unexpected(unexpected_handler) noexcept; + + + + unexpected_handler get_unexpected() noexcept; + + + + + void unexpected() __attribute__ ((__noreturn__)); +# 127 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 3 + bool uncaught_exception() noexcept __attribute__ ((__pure__)); + + +} + +namespace __gnu_cxx +{ + +# 152 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 3 + void __verbose_terminate_handler(); + + +} + +} + +#pragma GCC visibility pop + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_ptr.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_ptr.h" 3 +#pragma GCC visibility push(default) +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_ptr.h" 3 +extern "C++" { + +namespace std +{ + class type_info; + + + + + + namespace __exception_ptr + { + class exception_ptr; + } + + using __exception_ptr::exception_ptr; + + + + + + exception_ptr current_exception() noexcept; + + + void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); + + namespace __exception_ptr + { + + + + + class exception_ptr + { + void* _M_exception_object; + + explicit exception_ptr(void* __e) noexcept; + + void _M_addref() noexcept; + void _M_release() noexcept; + + void *_M_get() const noexcept __attribute__ ((__pure__)); + + friend exception_ptr std::current_exception() noexcept; + friend void std::rethrow_exception(exception_ptr); + + public: + exception_ptr() noexcept; + + exception_ptr(const exception_ptr&) noexcept; + + + exception_ptr(nullptr_t) noexcept + : _M_exception_object(0) + { } + + exception_ptr(exception_ptr&& __o) noexcept + : _M_exception_object(__o._M_exception_object) + { __o._M_exception_object = 0; } +# 111 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_ptr.h" 3 + exception_ptr& + operator=(const exception_ptr&) noexcept; + + + exception_ptr& + operator=(exception_ptr&& __o) noexcept + { + exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this); + return *this; + } + + + ~exception_ptr() noexcept; + + void + swap(exception_ptr&) noexcept; +# 138 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/exception_ptr.h" 3 + explicit operator bool() const + { return _M_exception_object; } + + + friend bool + operator==(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + const class std::type_info* + __cxa_exception_type() const noexcept + __attribute__ ((__pure__)); + }; + + bool + operator==(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + bool + operator!=(const exception_ptr&, const exception_ptr&) + noexcept __attribute__ ((__pure__)); + + inline void + swap(exception_ptr& __lhs, exception_ptr& __rhs) + { __lhs.swap(__rhs); } + + } + + + + template<typename _Ex> + exception_ptr + make_exception_ptr(_Ex __ex) noexcept + { + + try + { + throw __ex; + } + catch(...) + { + return current_exception(); + } + + + + } + + + + + + template<typename _Ex> + exception_ptr + copy_exception(_Ex __ex) noexcept __attribute__ ((__deprecated__)); + + template<typename _Ex> + exception_ptr + copy_exception(_Ex __ex) noexcept + { return std::make_exception_ptr<_Ex>(__ex); } + + +} + +} + +#pragma GCC visibility pop +# 163 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/nested_exception.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/nested_exception.h" 3 +#pragma GCC visibility push(default) +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/nested_exception.h" 3 +extern "C++" { + +namespace std +{ + + + + + + + class nested_exception + { + exception_ptr _M_ptr; + + public: + nested_exception() noexcept : _M_ptr(current_exception()) { } + + nested_exception(const nested_exception&) noexcept = default; + + nested_exception& operator=(const nested_exception&) noexcept = default; + + virtual ~nested_exception() noexcept; + + [[noreturn]] + void + rethrow_nested() const + { + if (_M_ptr) + rethrow_exception(_M_ptr); + std::terminate(); + } + + exception_ptr + nested_ptr() const noexcept + { return _M_ptr; } + }; + + template<typename _Except> + struct _Nested_exception : public _Except, public nested_exception + { + explicit _Nested_exception(const _Except& __ex) + : _Except(__ex) + { } + + explicit _Nested_exception(_Except&& __ex) + : _Except(static_cast<_Except&&>(__ex)) + { } + }; + + template<typename _Tp, + bool __with_nested = !__is_base_of(nested_exception, _Tp)> + struct _Throw_with_nested_impl + { + template<typename _Up> + static void _S_throw(_Up&& __t) + { throw _Nested_exception<_Tp>{static_cast<_Up&&>(__t)}; } + }; + + template<typename _Tp> + struct _Throw_with_nested_impl<_Tp, false> + { + template<typename _Up> + static void _S_throw(_Up&& __t) + { throw static_cast<_Up&&>(__t); } + }; + + template<typename _Tp, bool = __is_class(_Tp) && !__is_final(_Tp)> + struct _Throw_with_nested_helper : _Throw_with_nested_impl<_Tp> + { }; + + template<typename _Tp> + struct _Throw_with_nested_helper<_Tp, false> + : _Throw_with_nested_impl<_Tp, false> + { }; + + template<typename _Tp> + struct _Throw_with_nested_helper<_Tp&, false> + : _Throw_with_nested_helper<_Tp> + { }; + + template<typename _Tp> + struct _Throw_with_nested_helper<_Tp&&, false> + : _Throw_with_nested_helper<_Tp> + { }; + + + + template<typename _Tp> + [[noreturn]] + inline void + throw_with_nested(_Tp&& __t) + { + _Throw_with_nested_helper<_Tp>::_S_throw(static_cast<_Tp&&>(__t)); + } + + template<typename _Tp, bool = __is_polymorphic(_Tp)> + struct _Rethrow_if_nested_impl + { + static void _S_rethrow(const _Tp& __t) + { + if (auto __tp = dynamic_cast<const nested_exception*>(&__t)) + __tp->rethrow_nested(); + } + }; + + template<typename _Tp> + struct _Rethrow_if_nested_impl<_Tp, false> + { + static void _S_rethrow(const _Tp&) { } + }; + + + template<typename _Ex> + inline void + rethrow_if_nested(const _Ex& __ex) + { + _Rethrow_if_nested_impl<_Ex>::_S_rethrow(__ex); + } + + +} + +} + + + +#pragma GCC visibility pop +# 164 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/exception" 2 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/new" 2 3 + +#pragma GCC visibility push(default) + +extern "C++" { + +namespace std +{ + + + + + + + class bad_alloc : public exception + { + public: + bad_alloc() throw() { } + + + + virtual ~bad_alloc() throw(); + + + virtual const char* what() const throw(); + }; + + + class bad_array_new_length : public bad_alloc + { + public: + bad_array_new_length() throw() { }; + + + + virtual ~bad_array_new_length() throw(); + + + virtual const char* what() const throw(); + }; + + + struct nothrow_t { }; + + extern const nothrow_t nothrow; + + + + typedef void (*new_handler)(); + + + + new_handler set_new_handler(new_handler) throw(); + + + + new_handler get_new_handler() noexcept; + +} +# 111 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/new" 3 +void* operator new(std::size_t) + __attribute__((__externally_visible__)); +void* operator new[](std::size_t) + __attribute__((__externally_visible__)); +void operator delete(void*) noexcept + __attribute__((__externally_visible__)); +void operator delete[](void*) noexcept + __attribute__((__externally_visible__)); +void* operator new(std::size_t, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); +void* operator new[](std::size_t, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); +void operator delete(void*, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); +void operator delete[](void*, const std::nothrow_t&) noexcept + __attribute__((__externally_visible__)); + + +inline void* operator new(std::size_t, void* __p) noexcept +{ return __p; } +inline void* operator new[](std::size_t, void* __p) noexcept +{ return __p; } + + +inline void operator delete (void*, void*) noexcept { } +inline void operator delete[](void*, void*) noexcept { } + +} + +#pragma GCC visibility pop +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_construct.h" 2 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/alloc_traits.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/alloc_traits.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/alloc_traits.h" 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 1 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/memoryfwd.h" 1 3 +# 46 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/memoryfwd.h" 3 + +# 47 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/memoryfwd.h" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/memoryfwd.h" 3 + template<typename> + class allocator; + + template<> + class allocator<void>; + + + template<typename, typename> + struct uses_allocator; + + + + +} +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 2 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Alloc, typename _Tp> + class __alloctr_rebind_helper + { + template<typename _Alloc2, typename _Tp2> + static constexpr true_type + _S_chk(typename _Alloc2::template rebind<_Tp2>::other*); + + template<typename, typename> + static constexpr false_type + _S_chk(...); + + public: + using __type = decltype(_S_chk<_Alloc, _Tp>(nullptr)); + }; + + template<typename _Alloc, typename _Tp, + bool = __alloctr_rebind_helper<_Alloc, _Tp>::__type::value> + struct __alloctr_rebind; + + template<typename _Alloc, typename _Tp> + struct __alloctr_rebind<_Alloc, _Tp, true> + { + typedef typename _Alloc::template rebind<_Tp>::other __type; + }; + + template<template<typename, typename...> class _Alloc, typename _Tp, + typename _Up, typename... _Args> + struct __alloctr_rebind<_Alloc<_Up, _Args...>, _Tp, false> + { + typedef _Alloc<_Tp, _Args...> __type; + }; + + template<typename _Alloc, typename _Tp> + using __alloc_rebind = typename __alloctr_rebind<_Alloc, _Tp>::__type; + + + + + + template<typename _Alloc> + struct allocator_traits + { + + typedef _Alloc allocator_type; + + typedef typename _Alloc::value_type value_type; +# 98 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 +private: template<typename _Tp> static typename _Tp::pointer _S_pointer_helper(_Tp*); static value_type* _S_pointer_helper(...); typedef decltype(_S_pointer_helper((_Alloc*)0)) __pointer; public: + + + + + + + typedef __pointer pointer; + +private: template<typename _Tp> static typename _Tp::const_pointer _S_const_pointer_helper(_Tp*); static typename pointer_traits<pointer>::template rebind<const value_type> _S_const_pointer_helper(...); typedef decltype(_S_const_pointer_helper((_Alloc*)0)) __const_pointer; public: +# 116 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __const_pointer const_pointer; + +private: template<typename _Tp> static typename _Tp::void_pointer _S_void_pointer_helper(_Tp*); static typename pointer_traits<pointer>::template rebind<void> _S_void_pointer_helper(...); typedef decltype(_S_void_pointer_helper((_Alloc*)0)) __void_pointer; public: +# 127 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __void_pointer void_pointer; + +private: template<typename _Tp> static typename _Tp::const_void_pointer _S_const_void_pointer_helper(_Tp*); static typename pointer_traits<pointer>::template rebind<const void> _S_const_void_pointer_helper(...); typedef decltype(_S_const_void_pointer_helper((_Alloc*)0)) __const_void_pointer; public: +# 138 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __const_void_pointer const_void_pointer; + +private: template<typename _Tp> static typename _Tp::difference_type _S_difference_type_helper(_Tp*); static typename pointer_traits<pointer>::difference_type _S_difference_type_helper(...); typedef decltype(_S_difference_type_helper((_Alloc*)0)) __difference_type; public: +# 149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __difference_type difference_type; + +private: template<typename _Tp> static typename _Tp::size_type _S_size_type_helper(_Tp*); static typename make_unsigned<difference_type>::type _S_size_type_helper(...); typedef decltype(_S_size_type_helper((_Alloc*)0)) __size_type; public: +# 160 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __size_type size_type; + +private: template<typename _Tp> static typename _Tp::propagate_on_container_copy_assignment _S_propagate_on_container_copy_assignment_helper(_Tp*); static false_type _S_propagate_on_container_copy_assignment_helper(...); typedef decltype(_S_propagate_on_container_copy_assignment_helper((_Alloc*)0)) __propagate_on_container_copy_assignment; public: +# 171 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __propagate_on_container_copy_assignment + propagate_on_container_copy_assignment; + +private: template<typename _Tp> static typename _Tp::propagate_on_container_move_assignment _S_propagate_on_container_move_assignment_helper(_Tp*); static false_type _S_propagate_on_container_move_assignment_helper(...); typedef decltype(_S_propagate_on_container_move_assignment_helper((_Alloc*)0)) __propagate_on_container_move_assignment; public: +# 183 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __propagate_on_container_move_assignment + propagate_on_container_move_assignment; + +private: template<typename _Tp> static typename _Tp::propagate_on_container_swap _S_propagate_on_container_swap_helper(_Tp*); static false_type _S_propagate_on_container_swap_helper(...); typedef decltype(_S_propagate_on_container_swap_helper((_Alloc*)0)) __propagate_on_container_swap; public: +# 195 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + typedef __propagate_on_container_swap propagate_on_container_swap; + + + + template<typename _Tp> + using rebind_alloc = typename __alloctr_rebind<_Alloc, _Tp>::__type; + template<typename _Tp> + using rebind_traits = allocator_traits<rebind_alloc<_Tp>>; + + private: + template<typename _Alloc2> + struct __allocate_helper + { + template<typename _Alloc3, + typename = decltype(std::declval<_Alloc3*>()->allocate( + std::declval<size_type>(), + std::declval<const_void_pointer>()))> + static true_type __test(int); + + template<typename> + static false_type __test(...); + + using type = decltype(__test<_Alloc>(0)); + }; + + template<typename _Alloc2> + using __has_allocate = typename __allocate_helper<_Alloc2>::type; + + template<typename _Alloc2, + typename = _Require<__has_allocate<_Alloc2>>> + static pointer + _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint) + { return __a.allocate(__n, __hint); } + + template<typename _Alloc2, typename _UnusedHint, + typename = _Require<__not_<__has_allocate<_Alloc2>>>> + static pointer + _S_allocate(_Alloc2& __a, size_type __n, _UnusedHint) + { return __a.allocate(__n); } + + template<typename _Tp, typename... _Args> + struct __construct_helper + { + template<typename _Alloc2, + typename = decltype(std::declval<_Alloc2*>()->construct( + std::declval<_Tp*>(), std::declval<_Args>()...))> + static true_type __test(int); + + template<typename> + static false_type __test(...); + + using type = decltype(__test<_Alloc>(0)); + }; + + template<typename _Tp, typename... _Args> + using __has_construct + = typename __construct_helper<_Tp, _Args...>::type; + + template<typename _Tp, typename... _Args> + static _Require<__has_construct<_Tp, _Args...>> + _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) + { __a.construct(__p, std::forward<_Args>(__args)...); } + + template<typename _Tp, typename... _Args> + 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<typename _Tp> + struct __destroy_helper + { + template<typename _Alloc2, + typename = decltype(std::declval<_Alloc2*>()->destroy( + std::declval<_Tp*>()))> + static true_type __test(int); + + template<typename> + static false_type __test(...); + + using type = decltype(__test<_Alloc>(0)); + }; + + template<typename _Tp> + using __has_destroy = typename __destroy_helper<_Tp>::type; + + template<typename _Tp> + static _Require<__has_destroy<_Tp>> + _S_destroy(_Alloc& __a, _Tp* __p) + { __a.destroy(__p); } + + template<typename _Tp> + static _Require<__not_<__has_destroy<_Tp>>> + _S_destroy(_Alloc&, _Tp* __p) + { __p->~_Tp(); } + + template<typename _Alloc2> + struct __maxsize_helper + { + template<typename _Alloc3, + typename = decltype(std::declval<_Alloc3*>()->max_size())> + static true_type __test(int); + + template<typename> + static false_type __test(...); + + using type = decltype(__test<_Alloc2>(0)); + }; + + template<typename _Alloc2> + using __has_max_size = typename __maxsize_helper<_Alloc2>::type; + + template<typename _Alloc2, + typename = _Require<__has_max_size<_Alloc2>>> + static size_type + _S_max_size(_Alloc2& __a, int) + { return __a.max_size(); } + + template<typename _Alloc2, + typename = _Require<__not_<__has_max_size<_Alloc2>>>> + static size_type + _S_max_size(_Alloc2&, ...) + { return __gnu_cxx::__numeric_traits<size_type>::__max; } + + template<typename _Alloc2> + struct __select_helper + { + template<typename _Alloc3, typename + = decltype(std::declval<_Alloc3*>() + ->select_on_container_copy_construction())> + static true_type __test(int); + + template<typename> + static false_type __test(...); + + using type = decltype(__test<_Alloc2>(0)); + }; + + template<typename _Alloc2> + using __has_soccc = typename __select_helper<_Alloc2>::type; + + template<typename _Alloc2, + typename = _Require<__has_soccc<_Alloc2>>> + static _Alloc2 + _S_select(_Alloc2& __a, int) + { return __a.select_on_container_copy_construction(); } + + template<typename _Alloc2, + typename = _Require<__not_<__has_soccc<_Alloc2>>>> + static _Alloc2 + _S_select(_Alloc2& __a, ...) + { return __a; } + + public: +# 358 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + static pointer + allocate(_Alloc& __a, size_type __n) + { return __a.allocate(__n); } +# 373 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + static pointer + allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) + { return _S_allocate(__a, __n, __hint); } +# 385 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + static void deallocate(_Alloc& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } +# 399 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + template<typename _Tp, typename... _Args> + 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)...); } +# 412 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + template <class _Tp> + static void destroy(_Alloc& __a, _Tp* __p) + { _S_destroy(__a, __p); } +# 424 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + static size_type max_size(const _Alloc& __a) noexcept + { return _S_max_size(__a, 0); } +# 435 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/alloc_traits.h" 3 + static _Alloc + select_on_container_copy_construction(const _Alloc& __rhs) + { return _S_select(__rhs, 0); } + }; + + template<typename _Alloc> + inline void + __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) + { __one = __two; } + + template<typename _Alloc> + inline void + __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) + { } + + template<typename _Alloc> + 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<typename _Alloc> + inline _Alloc __alloc_on_copy(const _Alloc& __a) + { + typedef allocator_traits<_Alloc> __traits; + return __traits::select_on_container_copy_construction(__a); + } + + template<typename _Alloc> + inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) + { __one = std::move(__two); } + + template<typename _Alloc> + inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) + { } + + template<typename _Alloc> + 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<typename _Alloc> + inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) + { + using std::swap; + swap(__one, __two); + } + + template<typename _Alloc> + inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) + { } + + template<typename _Alloc> + 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<typename _Alloc> + class __is_copy_insertable_impl + { + typedef allocator_traits<_Alloc> _Traits; + + template<typename _Up, typename + = decltype(_Traits::construct(std::declval<_Alloc&>(), + std::declval<_Up*>(), + std::declval<const _Up&>()))> + static true_type + _M_select(int); + + template<typename _Up> + static false_type + _M_select(...); + + public: + typedef decltype(_M_select<typename _Alloc::value_type>(0)) type; + }; + + + template<typename _Alloc> + struct __is_copy_insertable + : __is_copy_insertable_impl<_Alloc>::type + { }; + + + template<typename _Tp> + struct __is_copy_insertable<allocator<_Tp>> + : is_copy_constructible<_Tp> + { }; + + +} +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/alloc_traits.h" 2 3 + + + + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + template<typename _Alloc> + struct __allocator_always_compares_equal : std::false_type { }; + + template<typename _Tp> + struct __allocator_always_compares_equal<std::allocator<_Tp>> + : std::true_type { }; + + template<typename, typename> struct array_allocator; + + template<typename _Tp, typename _Array> + struct __allocator_always_compares_equal<array_allocator<_Tp, _Array>> + : std::true_type { }; + + template<typename> struct bitmap_allocator; + + template<typename _Tp> + struct __allocator_always_compares_equal<bitmap_allocator<_Tp>> + : std::true_type { }; + + template<typename> struct malloc_allocator; + + template<typename _Tp> + struct __allocator_always_compares_equal<malloc_allocator<_Tp>> + : std::true_type { }; + + template<typename> struct mt_allocator; + + template<typename _Tp> + struct __allocator_always_compares_equal<mt_allocator<_Tp>> + : std::true_type { }; + + template<typename> struct new_allocator; + + template<typename _Tp> + struct __allocator_always_compares_equal<new_allocator<_Tp>> + : std::true_type { }; + + template<typename> struct pool_allocator; + + template<typename _Tp> + struct __allocator_always_compares_equal<pool_allocator<_Tp>> + : std::true_type { }; + + + + + + +template<typename _Alloc> + struct __alloc_traits + + : std::allocator_traits<_Alloc> + + { + typedef _Alloc allocator_type; + + 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; + + 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<typename _Ptr> + using __is_custom_pointer + = std::__and_<std::is_same<pointer, _Ptr>, + std::__not_<std::is_pointer<_Ptr>>>; + + public: + + template<typename _Ptr, typename... _Args> + 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)...); + } + + + template<typename _Ptr> + 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 __allocator_always_compares_equal<_Alloc>::value; } + + static constexpr bool _S_nothrow_move() + { return _S_propagate_on_move_assign() || _S_always_equal(); } + + static constexpr bool _S_nothrow_swap() + { + using std::swap; + return !_S_propagate_on_swap() + || noexcept(swap(std::declval<_Alloc&>(), std::declval<_Alloc&>())); + } + + template<typename _Tp> + struct rebind + { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; +# 210 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/alloc_traits.h" 3 + }; + + +} +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_construct.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<typename _T1, typename... _Args> + inline void + _Construct(_T1* __p, _Args&&... __args) + { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); } +# 90 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_construct.h" 3 + template<typename _Tp> + inline void + _Destroy(_Tp* __pointer) + { __pointer->~_Tp(); } + + template<bool> + struct _Destroy_aux + { + template<typename _ForwardIterator> + static void + __destroy(_ForwardIterator __first, _ForwardIterator __last) + { + for (; __first != __last; ++__first) + std::_Destroy(std::__addressof(*__first)); + } + }; + + template<> + struct _Destroy_aux<true> + { + template<typename _ForwardIterator> + static void + __destroy(_ForwardIterator, _ForwardIterator) { } + }; + + + + + + + template<typename _ForwardIterator> + inline void + _Destroy(_ForwardIterator __first, _ForwardIterator __last) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _Value_type; + std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: + __destroy(__first, __last); + } + + + + + + + + template<typename _ForwardIterator, typename _Allocator> + void + _Destroy(_ForwardIterator __first, _ForwardIterator __last, + _Allocator& __alloc) + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __first != __last; ++__first) + __traits::destroy(__alloc, std::__addressof(*__first)); + } + + template<typename _ForwardIterator, typename _Tp> + inline void + _Destroy(_ForwardIterator __first, _ForwardIterator __last, + allocator<_Tp>&) + { + _Destroy(__first, __last); + } + + +} +# 61 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 83 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 3 + template<typename _Tp> + pair<_Tp*, ptrdiff_t> + get_temporary_buffer(ptrdiff_t __len) noexcept + { + const ptrdiff_t __max = + __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp); + if (__len > __max) + __len = __max; + + while (__len > 0) + { + _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), + std::nothrow)); + if (__tmp != 0) + return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); + __len /= 2; + } + return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); + } +# 110 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 3 + template<typename _Tp> + inline void + return_temporary_buffer(_Tp* __p) + { ::operator delete(__p, std::nothrow); } + + + + + + + + template<typename _ForwardIterator, typename _Tp> + class _Temporary_buffer + { + + + + public: + typedef _Tp value_type; + typedef value_type* pointer; + typedef pointer iterator; + typedef ptrdiff_t size_type; + + protected: + size_type _M_original_len; + size_type _M_len; + pointer _M_buffer; + + public: + + size_type + size() const + { return _M_len; } + + + size_type + requested_size() const + { return _M_original_len; } + + + iterator + begin() + { return _M_buffer; } + + + iterator + end() + { return _M_buffer + _M_len; } + + + + + + _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); + + ~_Temporary_buffer() + { + std::_Destroy(_M_buffer, _M_buffer + _M_len); + std::return_temporary_buffer(_M_buffer); + } + + private: + + _Temporary_buffer(const _Temporary_buffer&); + + void + operator=(const _Temporary_buffer&); + }; + + + template<bool> + struct __uninitialized_construct_buf_dispatch + { + template<typename _Pointer, typename _ForwardIterator> + static void + __ucr(_Pointer __first, _Pointer __last, + _ForwardIterator __seed) + { + if(__first == __last) + return; + + _Pointer __cur = __first; + try + { + std::_Construct(std::__addressof(*__first), + std::move(*__seed)); + _Pointer __prev = __cur; + ++__cur; + for(; __cur != __last; ++__cur, ++__prev) + std::_Construct(std::__addressof(*__cur), + std::move(*__prev)); + *__seed = std::move(*__prev); + } + catch(...) + { + std::_Destroy(__first, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_construct_buf_dispatch<true> + { + template<typename _Pointer, typename _ForwardIterator> + static void + __ucr(_Pointer, _Pointer, _ForwardIterator) { } + }; +# 229 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tempbuf.h" 3 + template<typename _Pointer, typename _ForwardIterator> + inline void + __uninitialized_construct_buf(_Pointer __first, _Pointer __last, + _ForwardIterator __seed) + { + typedef typename std::iterator_traits<_Pointer>::value_type + _ValueType; + + std::__uninitialized_construct_buf_dispatch< + __has_trivial_constructor(_ValueType)>:: + __ucr(__first, __last, __seed); + } + + template<typename _ForwardIterator, typename _Tp> + _Temporary_buffer<_ForwardIterator, _Tp>:: + _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) + : _M_original_len(std::distance(__first, __last)), + _M_len(0), _M_buffer(0) + { + try + { + std::pair<pointer, size_type> __p(std::get_temporary_buffer< + value_type>(_M_original_len)); + _M_buffer = __p.first; + _M_len = __p.second; + if (_M_buffer) + std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, + __first); + } + catch(...) + { + std::return_temporary_buffer(_M_buffer); + _M_buffer = 0; + _M_len = 0; + throw; + } + } + + +} +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 2 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 3 + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 + + + + +# 1 "/mnt/odroid-c2/usr/include/math.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/math.h" 3 4 +extern "C" { + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/math-vector.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/math-vector.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/math-vector.h" 2 3 4 +# 32 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/huge_val.h" 1 3 4 +# 36 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/huge_valf.h" 1 3 4 +# 38 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/huge_vall.h" 1 3 4 +# 39 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/inf.h" 1 3 4 +# 42 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/nan.h" 1 3 4 +# 45 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathdef.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathdef.h" 3 4 +typedef float float_t; + +typedef double double_t; +# 49 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 83 "/mnt/odroid-c2/usr/include/math.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 +# 52 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 + + +extern double acos (double __x) throw (); extern double __acos (double __x) throw (); + +extern double asin (double __x) throw (); extern double __asin (double __x) throw (); + +extern double atan (double __x) throw (); extern double __atan (double __x) throw (); + +extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); + + + extern double cos (double __x) throw (); extern double __cos (double __x) throw (); + + extern double sin (double __x) throw (); extern double __sin (double __x) throw (); + +extern double tan (double __x) throw (); extern double __tan (double __x) throw (); + + + + +extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); + +extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); + +extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); + + + + + extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () + ; + + + + + +extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); + +extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); + +extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); + + + + + + + + extern double exp (double __x) throw (); extern double __exp (double __x) throw (); + + +extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); + + +extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); + + + extern double log (double __x) throw (); extern double __log (double __x) throw (); + + +extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); + + +extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + + +extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); + +extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw (); + + + + + +extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); + + +extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); + + +extern double logb (double __x) throw (); extern double __logb (double __x) throw (); + + + + + + +extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); + + +extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); + + + + + + + + + extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); + + +extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); + + + + + +extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); + + + + + + +extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); + + + + + + + + +extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); + + +extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); + + +extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); + + +extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); + + + + +extern int __isinf (double __value) throw () __attribute__ ((__const__)); + + +extern int __finite (double __value) throw () __attribute__ ((__const__)); + +# 208 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 +extern int finite (double __value) throw () __attribute__ ((__const__)); + + +extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); + + + +extern double significand (double __x) throw (); extern double __significand (double __x) throw (); + + + + + +extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); + + + + + + +extern double nan (const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (const char *__tagb) throw () __attribute__ ((__const__)); + + + + + +extern int __isnan (double __value) throw () __attribute__ ((__const__)); +# 247 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 +extern double j0 (double) throw (); extern double __j0 (double) throw (); +extern double j1 (double) throw (); extern double __j1 (double) throw (); +extern double jn (int, double) throw (); extern double __jn (int, double) throw (); +extern double y0 (double) throw (); extern double __y0 (double) throw (); +extern double y1 (double) throw (); extern double __y1 (double) throw (); +extern double yn (int, double) throw (); extern double __yn (int, double) throw (); + + + + + + +extern double erf (double) throw (); extern double __erf (double) throw (); +extern double erfc (double) throw (); extern double __erfc (double) throw (); +extern double lgamma (double) throw (); extern double __lgamma (double) throw (); + + + + + + +extern double tgamma (double) throw (); extern double __tgamma (double) throw (); + + + + + +extern double gamma (double) throw (); extern double __gamma (double) throw (); + + + + + + +extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); + + + + + + + +extern double rint (double __x) throw (); extern double __rint (double __x) throw (); + + +extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__)); + +extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); + + + +extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); + + + +extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); + + + +extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); + + + + +extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); + + + +extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); + + + +extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); + + + +extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); + + + + +extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); + + + + + + +extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); +__extension__ +extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); + + + +extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); +__extension__ +extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); + + + +extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); + + +extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); + + +extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); + + + +extern int __fpclassify (double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbit (double __value) throw () + __attribute__ ((__const__)); + + + +extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); + + + + + + + + +extern int __issignaling (double __value) throw () + __attribute__ ((__const__)); + + + + + + +extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); +# 84 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 104 "/mnt/odroid-c2/usr/include/math.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 +# 52 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 + + +extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); + +extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); + +extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); + +extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); + + + extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); + + extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); + +extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); + + + + +extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); + +extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); + +extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); + + + + + extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () + ; + + + + + +extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); + +extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); + +extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); + + + + + + + + extern float expf (float __x) throw (); extern float __expf (float __x) throw (); + + +extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); + + +extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); + + + extern float logf (float __x) throw (); extern float __logf (float __x) throw (); + + +extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); + + +extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + + +extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); + +extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw (); + + + + + +extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); + + +extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); + + +extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); + + + + + + +extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); + + +extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); + + + + + + + + + extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); + + +extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); + + + + + +extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); + + + + + + +extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); + + + + + + + + +extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); + + +extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); + + +extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); + + +extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); + + + + +extern int __isinff (float __value) throw () __attribute__ ((__const__)); + + +extern int __finitef (float __value) throw () __attribute__ ((__const__)); + + + + + + + + +extern int isinff (float __value) throw () __attribute__ ((__const__)); + + + +extern int finitef (float __value) throw () __attribute__ ((__const__)); + + +extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); + + + +extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); + + + + + +extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); + + + + + + +extern float nanf (const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (const char *__tagb) throw () __attribute__ ((__const__)); + + + + + +extern int __isnanf (float __value) throw () __attribute__ ((__const__)); + + + + + + +extern int isnanf (float __value) throw () __attribute__ ((__const__)); + + + + + +extern float j0f (float) throw (); extern float __j0f (float) throw (); +extern float j1f (float) throw (); extern float __j1f (float) throw (); +extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); +extern float y0f (float) throw (); extern float __y0f (float) throw (); +extern float y1f (float) throw (); extern float __y1f (float) throw (); +extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); + + + + + + +extern float erff (float) throw (); extern float __erff (float) throw (); +extern float erfcf (float) throw (); extern float __erfcf (float) throw (); +extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); + + + + + + +extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); + + + + + +extern float gammaf (float) throw (); extern float __gammaf (float) throw (); + + + + + + +extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); + + + + + + + +extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); + + +extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); + +extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); + + + +extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); + + + +extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); + + + +extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); + + + + +extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); + + + +extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); + + + +extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); + + + +extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); + + + + +extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); + + + + + + +extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); +__extension__ +extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); + + + +extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); +__extension__ +extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); + + + +extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); + + +extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); + + +extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); + + + +extern int __fpclassifyf (float __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitf (float __value) throw () + __attribute__ ((__const__)); + + + +extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); + + + + + + + + +extern int __issignalingf (float __value) throw () + __attribute__ ((__const__)); + + + + + + +extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); +# 105 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 151 "/mnt/odroid-c2/usr/include/math.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 +# 52 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 + + +extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); + +extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); + +extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); + +extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); + + + extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); + + extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); + +extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); + + + + +extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); + +extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); + +extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); + + + + + extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () + ; + + + + + +extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); + +extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); + +extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); + + + + + + + + extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); + + +extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); + + +extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); + + + extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); + + +extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); + + +extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2))); + + + + +extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); + +extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw (); + + + + + +extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); + + +extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); + + +extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); + + + + + + +extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); + + +extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); + + + + + + + + + extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); + + +extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); + + + + + +extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); + + + + + + +extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); + + + + + + + + +extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); + + +extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); + + + + +extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); + + +extern int __finitel (long double __value) throw () __attribute__ ((__const__)); + + + + + + + + +extern int isinfl (long double __value) throw () __attribute__ ((__const__)); + + + +extern int finitel (long double __value) throw () __attribute__ ((__const__)); + + +extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); + + + +extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); + + + + + +extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + + + + + +extern long double nanl (const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (const char *__tagb) throw () __attribute__ ((__const__)); + + + + + +extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); + + + + + + +extern int isnanl (long double __value) throw () __attribute__ ((__const__)); + + + + + +extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); +extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); +extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); +extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); +extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); +extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); + + + + + + +extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); +extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); +extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); + + + + + + +extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); + + + + + +extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); + + + + + + +extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); + + + + + + + +extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); + + +extern long double nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); + +extern long double nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + + +extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); + + + +extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); + + + +extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); + + + + +extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); + + + +extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); + + + +extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); + + + +extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); + + + + +extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); + + + + + + +extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); +__extension__ +extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); + + + +extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); +__extension__ +extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); + + + +extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); + + +extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + +extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); + + + +extern int __fpclassifyl (long double __value) throw () + __attribute__ ((__const__)); + + +extern int __signbitl (long double __value) throw () + __attribute__ ((__const__)); + + + +extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); + + + + + + + + +extern int __issignalingl (long double __value) throw () + __attribute__ ((__const__)); + + + + + + +extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); +# 152 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 168 "/mnt/odroid-c2/usr/include/math.h" 3 4 +extern int signgam; +# 209 "/mnt/odroid-c2/usr/include/math.h" 3 4 +enum + { + FP_NAN = + + 0, + FP_INFINITE = + + 1, + FP_ZERO = + + 2, + FP_SUBNORMAL = + + 3, + FP_NORMAL = + + 4 + }; +# 347 "/mnt/odroid-c2/usr/include/math.h" 3 4 +typedef enum +{ + _IEEE_ = -1, + _SVID_, + _XOPEN_, + _POSIX_, + _ISOC_ +} _LIB_VERSION_TYPE; + + + + +extern _LIB_VERSION_TYPE _LIB_VERSION; +# 370 "/mnt/odroid-c2/usr/include/math.h" 3 4 +struct __exception + + + + { + int type; + char *name; + double arg1; + double arg2; + double retval; + }; + + +extern int matherr (struct __exception *__exc) throw (); +# 472 "/mnt/odroid-c2/usr/include/math.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/mathinline.h" 1 3 4 +# 473 "/mnt/odroid-c2/usr/include/math.h" 2 3 4 +# 534 "/mnt/odroid-c2/usr/include/math.h" 3 4 +} +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 2 3 +# 75 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + inline constexpr double + abs(double __x) + { return __builtin_fabs(__x); } + + + + inline constexpr float + abs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + abs(long double __x) + { return __builtin_fabsl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + abs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::acos; + + + inline constexpr float + acos(float __x) + { return __builtin_acosf(__x); } + + inline constexpr long double + acos(long double __x) + { return __builtin_acosl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acos(_Tp __x) + { return __builtin_acos(__x); } + + using ::asin; + + + inline constexpr float + asin(float __x) + { return __builtin_asinf(__x); } + + inline constexpr long double + asin(long double __x) + { return __builtin_asinl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asin(_Tp __x) + { return __builtin_asin(__x); } + + using ::atan; + + + inline constexpr float + atan(float __x) + { return __builtin_atanf(__x); } + + inline constexpr long double + atan(long double __x) + { return __builtin_atanl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atan(_Tp __x) + { return __builtin_atan(__x); } + + using ::atan2; + + + inline constexpr float + atan2(float __y, float __x) + { return __builtin_atan2f(__y, __x); } + + inline constexpr long double + atan2(long double __y, long double __x) + { return __builtin_atan2l(__y, __x); } + + + template<typename _Tp, typename _Up> + inline 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; + + + inline constexpr float + ceil(float __x) + { return __builtin_ceilf(__x); } + + inline constexpr long double + ceil(long double __x) + { return __builtin_ceill(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ceil(_Tp __x) + { return __builtin_ceil(__x); } + + using ::cos; + + + inline constexpr float + cos(float __x) + { return __builtin_cosf(__x); } + + inline constexpr long double + cos(long double __x) + { return __builtin_cosl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cos(_Tp __x) + { return __builtin_cos(__x); } + + using ::cosh; + + + inline constexpr float + cosh(float __x) + { return __builtin_coshf(__x); } + + inline constexpr long double + cosh(long double __x) + { return __builtin_coshl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cosh(_Tp __x) + { return __builtin_cosh(__x); } + + using ::exp; + + + inline constexpr float + exp(float __x) + { return __builtin_expf(__x); } + + inline constexpr long double + exp(long double __x) + { return __builtin_expl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp(_Tp __x) + { return __builtin_exp(__x); } + + using ::fabs; + + + inline constexpr float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline constexpr long double + fabs(long double __x) + { return __builtin_fabsl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + fabs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::floor; + + + inline constexpr float + floor(float __x) + { return __builtin_floorf(__x); } + + inline constexpr long double + floor(long double __x) + { return __builtin_floorl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + floor(_Tp __x) + { return __builtin_floor(__x); } + + using ::fmod; + + + inline constexpr float + fmod(float __x, float __y) + { return __builtin_fmodf(__x, __y); } + + inline constexpr long double + fmod(long double __x, long double __y) + { return __builtin_fmodl(__x, __y); } + + + template<typename _Tp, typename _Up> + inline 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; + + + 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); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + frexp(_Tp __x, int* __exp) + { return __builtin_frexp(__x, __exp); } + + using ::ldexp; + + + inline constexpr float + ldexp(float __x, int __exp) + { return __builtin_ldexpf(__x, __exp); } + + inline constexpr long double + ldexp(long double __x, int __exp) + { return __builtin_ldexpl(__x, __exp); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ldexp(_Tp __x, int __exp) + { return __builtin_ldexp(__x, __exp); } + + using ::log; + + + inline constexpr float + log(float __x) + { return __builtin_logf(__x); } + + inline constexpr long double + log(long double __x) + { return __builtin_logl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log(_Tp __x) + { return __builtin_log(__x); } + + using ::log10; + + + inline constexpr float + log10(float __x) + { return __builtin_log10f(__x); } + + inline constexpr long double + log10(long double __x) + { return __builtin_log10l(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log10(_Tp __x) + { return __builtin_log10(__x); } + + using ::modf; + + + 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); } + + + using ::pow; + + + inline constexpr float + pow(float __x, float __y) + { return __builtin_powf(__x, __y); } + + inline constexpr long double + pow(long double __x, long double __y) + { return __builtin_powl(__x, __y); } +# 431 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 + template<typename _Tp, typename _Up> + inline 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; + + + inline constexpr float + sin(float __x) + { return __builtin_sinf(__x); } + + inline constexpr long double + sin(long double __x) + { return __builtin_sinl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sin(_Tp __x) + { return __builtin_sin(__x); } + + using ::sinh; + + + inline constexpr float + sinh(float __x) + { return __builtin_sinhf(__x); } + + inline constexpr long double + sinh(long double __x) + { return __builtin_sinhl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sinh(_Tp __x) + { return __builtin_sinh(__x); } + + using ::sqrt; + + + inline constexpr float + sqrt(float __x) + { return __builtin_sqrtf(__x); } + + inline constexpr long double + sqrt(long double __x) + { return __builtin_sqrtl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sqrt(_Tp __x) + { return __builtin_sqrt(__x); } + + using ::tan; + + + inline constexpr float + tan(float __x) + { return __builtin_tanf(__x); } + + inline constexpr long double + tan(long double __x) + { return __builtin_tanl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tan(_Tp __x) + { return __builtin_tan(__x); } + + using ::tanh; + + + inline constexpr float + tanh(float __x) + { return __builtin_tanhf(__x); } + + inline constexpr long double + tanh(long double __x) + { return __builtin_tanhl(__x); } + + + template<typename _Tp> + inline constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tanh(_Tp __x) + { return __builtin_tanh(__x); } + + +} +# 555 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + constexpr int + fpclassify(float __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + constexpr int + fpclassify(long double __x) + { return __builtin_fpclassify(0, 1, 4, + 3, 2, __x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + fpclassify(_Tp __x) + { return __x != 0 ? 4 : 2; } + + + 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); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isfinite(_Tp __x) + { return true; } + + + constexpr bool + isinf(float __x) + { return __builtin_isinf(__x); } + + constexpr bool + isinf(double __x) + { return __builtin_isinf(__x); } + + constexpr bool + isinf(long double __x) + { return __builtin_isinf(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isinf(_Tp __x) + { return false; } + + + constexpr bool + isnan(float __x) + { return __builtin_isnan(__x); } + + constexpr bool + isnan(double __x) + { return __builtin_isnan(__x); } + + constexpr bool + isnan(long double __x) + { return __builtin_isnan(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnan(_Tp __x) + { return false; } + + + 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); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnormal(_Tp __x) + { return __x != 0 ? true : false; } + + + + constexpr bool + signbit(float __x) + { return __builtin_signbitf(__x); } + + constexpr bool + signbit(double __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(long double __x) + { return __builtin_signbitl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + signbit(_Tp __x) + { return __x < 0 ? true : false; } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } +# 942 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 + +} +# 1058 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cmath" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + using ::double_t; + using ::float_t; + + + 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; + + + + constexpr float + acosh(float __x) + { return __builtin_acoshf(__x); } + + constexpr long double + acosh(long double __x) + { return __builtin_acoshl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acosh(_Tp __x) + { return __builtin_acosh(__x); } + + + constexpr float + asinh(float __x) + { return __builtin_asinhf(__x); } + + constexpr long double + asinh(long double __x) + { return __builtin_asinhl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asinh(_Tp __x) + { return __builtin_asinh(__x); } + + + constexpr float + atanh(float __x) + { return __builtin_atanhf(__x); } + + constexpr long double + atanh(long double __x) + { return __builtin_atanhl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atanh(_Tp __x) + { return __builtin_atanh(__x); } + + + constexpr float + cbrt(float __x) + { return __builtin_cbrtf(__x); } + + constexpr long double + cbrt(long double __x) + { return __builtin_cbrtl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cbrt(_Tp __x) + { return __builtin_cbrt(__x); } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + constexpr float + erf(float __x) + { return __builtin_erff(__x); } + + constexpr long double + erf(long double __x) + { return __builtin_erfl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erf(_Tp __x) + { return __builtin_erf(__x); } + + + constexpr float + erfc(float __x) + { return __builtin_erfcf(__x); } + + constexpr long double + erfc(long double __x) + { return __builtin_erfcl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erfc(_Tp __x) + { return __builtin_erfc(__x); } + + + constexpr float + exp2(float __x) + { return __builtin_exp2f(__x); } + + constexpr long double + exp2(long double __x) + { return __builtin_exp2l(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp2(_Tp __x) + { return __builtin_exp2(__x); } + + + constexpr float + expm1(float __x) + { return __builtin_expm1f(__x); } + + constexpr long double + expm1(long double __x) + { return __builtin_expm1l(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + expm1(_Tp __x) + { return __builtin_expm1(__x); } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up, typename _Vp> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + constexpr int + ilogb(float __x) + { return __builtin_ilogbf(__x); } + + constexpr int + ilogb(long double __x) + { return __builtin_ilogbl(__x); } + + + template<typename _Tp> + constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + ilogb(_Tp __x) + { return __builtin_ilogb(__x); } + + + constexpr float + lgamma(float __x) + { return __builtin_lgammaf(__x); } + + constexpr long double + lgamma(long double __x) + { return __builtin_lgammal(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + lgamma(_Tp __x) + { return __builtin_lgamma(__x); } + + + constexpr long long + llrint(float __x) + { return __builtin_llrintf(__x); } + + constexpr long long + llrint(long double __x) + { return __builtin_llrintl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llrint(_Tp __x) + { return __builtin_llrint(__x); } + + + constexpr long long + llround(float __x) + { return __builtin_llroundf(__x); } + + constexpr long long + llround(long double __x) + { return __builtin_llroundl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llround(_Tp __x) + { return __builtin_llround(__x); } + + + constexpr float + log1p(float __x) + { return __builtin_log1pf(__x); } + + constexpr long double + log1p(long double __x) + { return __builtin_log1pl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log1p(_Tp __x) + { return __builtin_log1p(__x); } + + + + constexpr float + log2(float __x) + { return __builtin_log2f(__x); } + + constexpr long double + log2(long double __x) + { return __builtin_log2l(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log2(_Tp __x) + { return __builtin_log2(__x); } + + + constexpr float + logb(float __x) + { return __builtin_logbf(__x); } + + constexpr long double + logb(long double __x) + { return __builtin_logbl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + logb(_Tp __x) + { return __builtin_logb(__x); } + + + constexpr long + lrint(float __x) + { return __builtin_lrintf(__x); } + + constexpr long + lrint(long double __x) + { return __builtin_lrintl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lrint(_Tp __x) + { return __builtin_lrint(__x); } + + + constexpr long + lround(float __x) + { return __builtin_lroundf(__x); } + + constexpr long + lround(long double __x) + { return __builtin_lroundl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lround(_Tp __x) + { return __builtin_lround(__x); } + + + constexpr float + nearbyint(float __x) + { return __builtin_nearbyintf(__x); } + + constexpr long double + nearbyint(long double __x) + { return __builtin_nearbyintl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nearbyint(_Tp __x) + { return __builtin_nearbyint(__x); } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nexttoward(_Tp __x, long double __y) + { return __builtin_nexttoward(__x, __y); } + + + 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); } + + + template<typename _Tp, typename _Up> + 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)); + } + + + 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); } + + + template<typename _Tp, typename _Up> + 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); + } + + + constexpr float + rint(float __x) + { return __builtin_rintf(__x); } + + constexpr long double + rint(long double __x) + { return __builtin_rintl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + rint(_Tp __x) + { return __builtin_rint(__x); } + + + constexpr float + round(float __x) + { return __builtin_roundf(__x); } + + constexpr long double + round(long double __x) + { return __builtin_roundl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + round(_Tp __x) + { return __builtin_round(__x); } + + + 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); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbln(_Tp __x, long __ex) + { return __builtin_scalbln(__x, __ex); } + + + 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); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbn(_Tp __x, int __ex) + { return __builtin_scalbn(__x, __ex); } + + + constexpr float + tgamma(float __x) + { return __builtin_tgammaf(__x); } + + constexpr long double + tgamma(long double __x) + { return __builtin_tgammal(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tgamma(_Tp __x) + { return __builtin_tgamma(__x); } + + + constexpr float + trunc(float __x) + { return __builtin_truncf(__x); } + + constexpr long double + trunc(long double __x) + { return __builtin_truncl(__x); } + + + template<typename _Tp> + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + trunc(_Tp __x) + { return __builtin_trunc(__x); } + + +} +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stringfwd.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stringfwd.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stringfwd.h" 3 + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + + template<class _CharT> + struct char_traits; + + template<> struct char_traits<char>; + + + template<> struct char_traits<wchar_t>; + + + + + template<> struct char_traits<char16_t>; + template<> struct char_traits<char32_t>; + + +namespace __cxx11 { + + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_string; + + + typedef basic_string<char> string; + + + + typedef basic_string<wchar_t> wstring; + + + + + + typedef basic_string<char16_t> u16string; + + + typedef basic_string<char32_t> u32string; + + +} + + + + +} +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 1 3 +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + + + + +# 1 "/mnt/odroid-c2/usr/include/wchar.h" 1 3 4 +# 36 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/stdio.h" 1 3 4 +# 44 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +struct _IO_FILE; + + + +typedef struct _IO_FILE FILE; + + + + + +# 64 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +typedef struct _IO_FILE __FILE; +# 37 "/mnt/odroid-c2/usr/include/wchar.h" 2 3 4 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdarg.h" 1 3 4 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdarg.h" 3 4 +typedef __builtin_va_list __gnuc_va_list; +# 40 "/mnt/odroid-c2/usr/include/wchar.h" 2 3 4 + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4 +# 42 "/mnt/odroid-c2/usr/include/wchar.h" 2 3 4 +# 51 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 357 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 3 4 +typedef unsigned int wint_t; +# 52 "/mnt/odroid-c2/usr/include/wchar.h" 2 3 4 +# 82 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +typedef struct +{ + int __count; + union + { + + unsigned int __wch; + + + + char __wchb[4]; + } __value; +} __mbstate_t; +# 104 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 + + +typedef __mbstate_t mbstate_t; + + + + + + +# 132 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern "C" { + + + + +struct tm; + + + + + + + + + +extern wchar_t *wcscpy (wchar_t *__restrict __dest, + const wchar_t *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern wchar_t *wcsncpy (wchar_t *__restrict __dest, + const wchar_t *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern wchar_t *wcscat (wchar_t *__restrict __dest, + const wchar_t *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern wchar_t *wcsncat (wchar_t *__restrict __dest, + const wchar_t *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); + + +extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, + size_t __n) throw (); + + + + + +extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, + __locale_t __loc) throw (); + +extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, + size_t __n, __locale_t __loc) throw (); + + + + + +extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); + + + +extern size_t wcsxfrm (wchar_t *__restrict __s1, + const wchar_t *__restrict __s2, size_t __n) throw (); + + + + + + + + +extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, + __locale_t __loc) throw (); + + + + +extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, + size_t __n, __locale_t __loc) throw (); + + +extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); + + + + + +extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) + throw () __asm ("wcschr") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) + throw () __asm ("wcschr") __attribute__ ((__pure__)); + + + + + + +extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) + throw () __asm ("wcsrchr") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) + throw () __asm ("wcsrchr") __attribute__ ((__pure__)); + + + + + + + + + +extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) + throw () __attribute__ ((__pure__)); + + + + + +extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) + throw () __attribute__ ((__pure__)); + + +extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) + throw () __attribute__ ((__pure__)); + + +extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) + throw () __asm ("wcspbrk") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, + const wchar_t *__accept) + throw () __asm ("wcspbrk") __attribute__ ((__pure__)); + + + + + + +extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) + throw () __asm ("wcsstr") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, + const wchar_t *__needle) + throw () __asm ("wcsstr") __attribute__ ((__pure__)); + + + + + + +extern wchar_t *wcstok (wchar_t *__restrict __s, + const wchar_t *__restrict __delim, + wchar_t **__restrict __ptr) throw (); + + +extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); + + + + + +extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) + throw () __asm ("wcswcs") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, + const wchar_t *__needle) + throw () __asm ("wcswcs") __attribute__ ((__pure__)); +# 309 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) + throw () __attribute__ ((__pure__)); + + + + + + +extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) + throw () __asm ("wmemchr") __attribute__ ((__pure__)); +extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, + size_t __n) + throw () __asm ("wmemchr") __attribute__ ((__pure__)); + + + + + + +extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) + throw () __attribute__ ((__pure__)); + + +extern wchar_t *wmemcpy (wchar_t *__restrict __s1, + const wchar_t *__restrict __s2, size_t __n) throw (); + + + +extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) + throw (); + + +extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); + + + + + +extern wchar_t *wmempcpy (wchar_t *__restrict __s1, + const wchar_t *__restrict __s2, size_t __n) + throw (); + + + + + + +extern wint_t btowc (int __c) throw (); + + + +extern int wctob (wint_t __c) throw (); + + + +extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); + + + +extern size_t mbrtowc (wchar_t *__restrict __pwc, + const char *__restrict __s, size_t __n, + mbstate_t *__restrict __p) throw (); + + +extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, + mbstate_t *__restrict __ps) throw (); + + +extern size_t __mbrlen (const char *__restrict __s, size_t __n, + mbstate_t *__restrict __ps) throw (); +extern size_t mbrlen (const char *__restrict __s, size_t __n, + mbstate_t *__restrict __ps) throw (); + + + + + + + + +extern wint_t __btowc_alias (int __c) __asm ("btowc"); +extern __inline __attribute__ ((__gnu_inline__)) wint_t +__attribute__ ((__leaf__)) btowc (int __c) throw () +{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' + ? (wint_t) __c : __btowc_alias (__c)); } + +extern int __wctob_alias (wint_t __c) __asm ("wctob"); +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__leaf__)) wctob (wint_t __wc) throw () +{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' + ? (int) __wc : __wctob_alias (__wc)); } + +extern __inline __attribute__ ((__gnu_inline__)) size_t +__attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () + +{ return (__ps != __null + ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } + + + + + +extern size_t mbsrtowcs (wchar_t *__restrict __dst, + const char **__restrict __src, size_t __len, + mbstate_t *__restrict __ps) throw (); + + + +extern size_t wcsrtombs (char *__restrict __dst, + const wchar_t **__restrict __src, size_t __len, + mbstate_t *__restrict __ps) throw (); + + + + + + +extern size_t mbsnrtowcs (wchar_t *__restrict __dst, + const char **__restrict __src, size_t __nmc, + size_t __len, mbstate_t *__restrict __ps) throw (); + + + +extern size_t wcsnrtombs (char *__restrict __dst, + const wchar_t **__restrict __src, + size_t __nwc, size_t __len, + mbstate_t *__restrict __ps) throw (); + + + + + + +extern int wcwidth (wchar_t __c) throw (); + + + +extern int wcswidth (const wchar_t *__s, size_t __n) throw (); + + + + + + +extern double wcstod (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) throw (); + + + + + +extern float wcstof (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) throw (); +extern long double wcstold (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) throw (); + + + + + + + +extern long int wcstol (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) throw (); + + + +extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + throw (); + + + + + + +__extension__ +extern long long int wcstoll (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + throw (); + + + +__extension__ +extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base) throw (); + + + + + + +__extension__ +extern long long int wcstoq (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + throw (); + + + +__extension__ +extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base) throw (); +# 533 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern long int wcstol_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base, + __locale_t __loc) throw (); + +extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) throw (); + +__extension__ +extern long long int wcstoll_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) throw (); + +__extension__ +extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base, __locale_t __loc) + throw (); + +extern double wcstod_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, __locale_t __loc) + throw (); + +extern float wcstof_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, __locale_t __loc) + throw (); + +extern long double wcstold_l (const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + __locale_t __loc) throw (); + + + + + + +extern wchar_t *wcpcpy (wchar_t *__restrict __dest, + const wchar_t *__restrict __src) throw (); + + + +extern wchar_t *wcpncpy (wchar_t *__restrict __dest, + const wchar_t *__restrict __src, size_t __n) + throw (); + + + + + + +extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); + + + + + + +extern int fwide (__FILE *__fp, int __mode) throw (); + + + + + + +extern int fwprintf (__FILE *__restrict __stream, + const wchar_t *__restrict __format, ...) + ; + + + + +extern int wprintf (const wchar_t *__restrict __format, ...) + ; + +extern int swprintf (wchar_t *__restrict __s, size_t __n, + const wchar_t *__restrict __format, ...) + throw () ; + + + + + +extern int vfwprintf (__FILE *__restrict __s, + const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + + + +extern int vwprintf (const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + +extern int vswprintf (wchar_t *__restrict __s, size_t __n, + const wchar_t *__restrict __format, + __gnuc_va_list __arg) + throw () ; + + + + + + +extern int fwscanf (__FILE *__restrict __stream, + const wchar_t *__restrict __format, ...) + ; + + + + +extern int wscanf (const wchar_t *__restrict __format, ...) + ; + +extern int swscanf (const wchar_t *__restrict __s, + const wchar_t *__restrict __format, ...) + throw () ; +# 683 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 + + + + + + + + + +extern int vfwscanf (__FILE *__restrict __s, + const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + + + +extern int vwscanf (const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + +extern int vswscanf (const wchar_t *__restrict __s, + const wchar_t *__restrict __format, + __gnuc_va_list __arg) + throw () ; +# 739 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 + + + + + + + + + +extern wint_t fgetwc (__FILE *__stream); +extern wint_t getwc (__FILE *__stream); + + + + + +extern wint_t getwchar (void); + + + + + + +extern wint_t fputwc (wchar_t __wc, __FILE *__stream); +extern wint_t putwc (wchar_t __wc, __FILE *__stream); + + + + + +extern wint_t putwchar (wchar_t __wc); + + + + + + + +extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, + __FILE *__restrict __stream); + + + + + +extern int fputws (const wchar_t *__restrict __ws, + __FILE *__restrict __stream); + + + + + + +extern wint_t ungetwc (wint_t __wc, __FILE *__stream); + +# 804 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern wint_t getwc_unlocked (__FILE *__stream); +extern wint_t getwchar_unlocked (void); + + + + + + + +extern wint_t fgetwc_unlocked (__FILE *__stream); + + + + + + + +extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); +# 830 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); +extern wint_t putwchar_unlocked (wchar_t __wc); +# 840 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, + __FILE *__restrict __stream); + + + + + + + +extern int fputws_unlocked (const wchar_t *__restrict __ws, + __FILE *__restrict __stream); + + + + + + + +extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, + const wchar_t *__restrict __format, + const struct tm *__restrict __tp) throw (); + + + + + + + +extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, + const wchar_t *__restrict __format, + const struct tm *__restrict __tp, + __locale_t __loc) throw (); +# 894 "/mnt/odroid-c2/usr/include/wchar.h" 3 4 +} +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 2 3 +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 +namespace std +{ + using ::mbstate_t; +} +# 135 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + 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; + + using ::swprintf; + + using ::swscanf; + using ::ungetwc; + using ::vfwprintf; + + using ::vfwscanf; + + + using ::vswprintf; + + + using ::vswscanf; + + using ::vwprintf; + + using ::vwscanf; + + 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; + + using ::wcstof; + + 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; +# 232 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + +} + + + + + + + +namespace __gnu_cxx +{ + + + + + + using ::wcstold; +# 257 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + using ::wcstoll; + using ::wcstoull; + +} + +namespace std +{ + using ::__gnu_cxx::wcstold; + using ::__gnu_cxx::wcstoll; + using ::__gnu_cxx::wcstoull; +} +# 277 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 +namespace std +{ + + using std::wcstof; + + + using std::vfwscanf; + + + using std::vswscanf; + + + using std::vwscanf; + + + + using std::wcstold; + using std::wcstoll; + using std::wcstoull; + +} +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 2 3 +# 68 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 88 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + typedef long streamoff; +# 98 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + typedef ptrdiff_t streamsize; +# 111 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + template<typename _StateT> + class fpos + { + private: + streamoff _M_off; + _StateT _M_state; + + public: + + + + + fpos() + : _M_off(0), _M_state() { } +# 133 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/postypes.h" 3 + fpos(streamoff __off) + : _M_off(__off), _M_state() { } + + + operator streamoff() const { return _M_off; } + + + void + state(_StateT __st) + { _M_state = __st; } + + + _StateT + state() const + { return _M_state; } + + + + + + fpos& + operator+=(streamoff __off) + { + _M_off += __off; + return *this; + } + + + + + + fpos& + operator-=(streamoff __off) + { + _M_off -= __off; + return *this; + } + + + + + + + + fpos + operator+(streamoff __off) const + { + fpos __pos(*this); + __pos += __off; + return __pos; + } + + + + + + + + fpos + operator-(streamoff __off) const + { + fpos __pos(*this); + __pos -= __off; + return __pos; + } + + + + + + + streamoff + operator-(const fpos& __other) const + { return _M_off - __other._M_off; } + }; + + + + + + + template<typename _StateT> + inline bool + operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) + { return streamoff(__lhs) == streamoff(__rhs); } + + template<typename _StateT> + inline bool + operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) + { return streamoff(__lhs) != streamoff(__rhs); } + + + + + + typedef fpos<mbstate_t> streampos; + + typedef fpos<mbstate_t> wstreampos; + + + + typedef fpos<mbstate_t> u16streampos; + + typedef fpos<mbstate_t> u32streampos; + + + +} +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + + + + +# 1 "/mnt/odroid-c2/usr/include/wchar.h" 1 3 4 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 2 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 2 3 + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + +# 57 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 3 + template<typename _CharT> + struct _Char_types + { + typedef unsigned long int_type; + typedef std::streampos pos_type; + typedef std::streamoff off_type; + typedef std::mbstate_t state_type; + }; +# 82 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 3 + template<typename _CharT> + struct char_traits + { + typedef _CharT char_type; + typedef typename _Char_types<_CharT>::int_type int_type; + typedef typename _Char_types<_CharT>::pos_type pos_type; + typedef typename _Char_types<_CharT>::off_type off_type; + typedef typename _Char_types<_CharT>::state_type state_type; + + static void + assign(char_type& __c1, const char_type& __c2) + { __c1 = __c2; } + + static constexpr bool + eq(const char_type& __c1, const char_type& __c2) + { return __c1 == __c2; } + + static constexpr bool + lt(const char_type& __c1, const char_type& __c2) + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, std::size_t __n); + + static std::size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, std::size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, std::size_t __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, std::size_t __n); + + static char_type* + assign(char_type* __s, std::size_t __n, char_type __a); + + static constexpr char_type + to_char_type(const int_type& __c) + { return static_cast<char_type>(__c); } + + static constexpr int_type + to_int_type(const char_type& __c) + { return static_cast<int_type>(__c); } + + static constexpr bool + eq_int_type(const int_type& __c1, const int_type& __c2) + { return __c1 == __c2; } + + static constexpr int_type + eof() + { return static_cast<int_type>(-1); } + + static constexpr int_type + not_eof(const int_type& __c) + { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } + }; + + template<typename _CharT> + int + char_traits<_CharT>:: + compare(const char_type* __s1, const char_type* __s2, std::size_t __n) + { + for (std::size_t __i = 0; __i < __n; ++__i) + if (lt(__s1[__i], __s2[__i])) + return -1; + else if (lt(__s2[__i], __s1[__i])) + return 1; + return 0; + } + + template<typename _CharT> + std::size_t + char_traits<_CharT>:: + length(const char_type* __p) + { + std::size_t __i = 0; + while (!eq(__p[__i], char_type())) + ++__i; + return __i; + } + + template<typename _CharT> + const typename char_traits<_CharT>::char_type* + char_traits<_CharT>:: + find(const char_type* __s, std::size_t __n, const char_type& __a) + { + for (std::size_t __i = 0; __i < __n; ++__i) + if (eq(__s[__i], __a)) + return __s + __i; + return 0; + } + + template<typename _CharT> + typename char_traits<_CharT>::char_type* + char_traits<_CharT>:: + move(char_type* __s1, const char_type* __s2, std::size_t __n) + { + return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, + __n * sizeof(char_type))); + } + + template<typename _CharT> + typename char_traits<_CharT>::char_type* + char_traits<_CharT>:: + copy(char_type* __s1, const char_type* __s2, std::size_t __n) + { + + std::copy(__s2, __s2 + __n, __s1); + return __s1; + } + + template<typename _CharT> + typename char_traits<_CharT>::char_type* + char_traits<_CharT>:: + assign(char_type* __s, std::size_t __n, char_type __a) + { + + std::fill_n(__s, __n, __a); + return __s; + } + + +} + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 226 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 3 + template<class _CharT> + struct char_traits : public __gnu_cxx::char_traits<_CharT> + { }; + + + + template<> + struct char_traits<char> + { + typedef char char_type; + typedef int int_type; + typedef streampos pos_type; + typedef streamoff off_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2) noexcept + { __c1 = __c2; } + + static constexpr bool + eq(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr bool + lt(const char_type& __c1, const char_type& __c2) noexcept + { + + return (static_cast<unsigned char>(__c1) + < static_cast<unsigned char>(__c2)); + } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return 0; + return __builtin_memcmp(__s1, __s2, __n); + } + + static size_t + length(const char_type* __s) + { return __builtin_strlen(__s); } + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a) + { + if (__n == 0) + return 0; + return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); + } + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); + } + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); + } + + static char_type* + assign(char_type* __s, size_t __n, char_type __a) + { + if (__n == 0) + return __s; + return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); + } + + static constexpr char_type + to_char_type(const int_type& __c) noexcept + { return static_cast<char_type>(__c); } + + + + static constexpr int_type + to_int_type(const char_type& __c) noexcept + { return static_cast<int_type>(static_cast<unsigned char>(__c)); } + + static constexpr bool + eq_int_type(const int_type& __c1, const int_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr int_type + eof() noexcept + { return static_cast<int_type>(-1); } + + static constexpr int_type + not_eof(const int_type& __c) noexcept + { return (__c == eof()) ? 0 : __c; } + }; + + + + + template<> + struct char_traits<wchar_t> + { + typedef wchar_t char_type; + typedef wint_t int_type; + typedef streamoff off_type; + typedef wstreampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2) noexcept + { __c1 = __c2; } + + static constexpr bool + eq(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr bool + lt(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return 0; + return wmemcmp(__s1, __s2, __n); + } + + static size_t + length(const char_type* __s) + { return wcslen(__s); } + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a) + { + if (__n == 0) + return 0; + return wmemchr(__s, __a, __n); + } + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return wmemmove(__s1, __s2, __n); + } + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return wmemcpy(__s1, __s2, __n); + } + + static char_type* + assign(char_type* __s, size_t __n, char_type __a) + { + if (__n == 0) + return __s; + return wmemset(__s, __a, __n); + } + + static constexpr char_type + to_char_type(const int_type& __c) noexcept + { return char_type(__c); } + + static constexpr int_type + to_int_type(const char_type& __c) noexcept + { return int_type(__c); } + + static constexpr bool + eq_int_type(const int_type& __c1, const int_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr int_type + eof() noexcept + { return static_cast<int_type>((0xffffffffu)); } + + static constexpr int_type + not_eof(const int_type& __c) noexcept + { return eq_int_type(__c, eof()) ? 0 : __c; } + }; + + + +} + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdint" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdint" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdint" 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdint" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdint.h" 1 3 4 +# 9 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdint.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/stdint.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/stdint.h" 2 3 4 +# 48 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; + +typedef unsigned int uint32_t; + + + +typedef unsigned long int uint64_t; +# 65 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; + +typedef long int int_least64_t; + + + + + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; + +typedef unsigned long int uint_least64_t; +# 90 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef signed char int_fast8_t; + +typedef long int int_fast16_t; +typedef long int int_fast32_t; +typedef long int int_fast64_t; +# 103 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef unsigned char uint_fast8_t; + +typedef unsigned long int uint_fast16_t; +typedef unsigned long int uint_fast32_t; +typedef unsigned long int uint_fast64_t; +# 119 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef long int intptr_t; + + +typedef unsigned long int uintptr_t; +# 134 "/mnt/odroid-c2/usr/include/stdint.h" 3 4 +typedef long int intmax_t; +typedef unsigned long int uintmax_t; +# 10 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdint.h" 2 3 4 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdint" 2 3 + + + + +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; +} +# 421 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/char_traits.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<> + struct char_traits<char16_t> + { + typedef char16_t char_type; + typedef uint_least16_t int_type; + typedef streamoff off_type; + typedef u16streampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2) noexcept + { __c1 = __c2; } + + static constexpr bool + eq(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr bool + lt(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { + for (size_t __i = 0; __i < __n; ++__i) + if (lt(__s1[__i], __s2[__i])) + return -1; + else if (lt(__s2[__i], __s1[__i])) + return 1; + return 0; + } + + static size_t + length(const char_type* __s) + { + size_t __i = 0; + while (!eq(__s[__i], char_type())) + ++__i; + return __i; + } + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a) + { + for (size_t __i = 0; __i < __n; ++__i) + if (eq(__s[__i], __a)) + return __s + __i; + return 0; + } + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return (static_cast<char_type*> + (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); + } + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return (static_cast<char_type*> + (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); + } + + static char_type* + assign(char_type* __s, size_t __n, char_type __a) + { + for (size_t __i = 0; __i < __n; ++__i) + assign(__s[__i], __a); + return __s; + } + + static constexpr char_type + to_char_type(const int_type& __c) noexcept + { return char_type(__c); } + + static constexpr int_type + to_int_type(const char_type& __c) noexcept + { return int_type(__c); } + + static constexpr bool + eq_int_type(const int_type& __c1, const int_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr int_type + eof() noexcept + { return static_cast<int_type>(-1); } + + static constexpr int_type + not_eof(const int_type& __c) noexcept + { return eq_int_type(__c, eof()) ? 0 : __c; } + }; + + template<> + struct char_traits<char32_t> + { + typedef char32_t char_type; + typedef uint_least32_t int_type; + typedef streamoff off_type; + typedef u32streampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2) noexcept + { __c1 = __c2; } + + static constexpr bool + eq(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr bool + lt(const char_type& __c1, const char_type& __c2) noexcept + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { + for (size_t __i = 0; __i < __n; ++__i) + if (lt(__s1[__i], __s2[__i])) + return -1; + else if (lt(__s2[__i], __s1[__i])) + return 1; + return 0; + } + + static size_t + length(const char_type* __s) + { + size_t __i = 0; + while (!eq(__s[__i], char_type())) + ++__i; + return __i; + } + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a) + { + for (size_t __i = 0; __i < __n; ++__i) + if (eq(__s[__i], __a)) + return __s + __i; + return 0; + } + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return (static_cast<char_type*> + (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); + } + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n) + { + if (__n == 0) + return __s1; + return (static_cast<char_type*> + (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); + } + + static char_type* + assign(char_type* __s, size_t __n, char_type __a) + { + for (size_t __i = 0; __i < __n; ++__i) + assign(__s[__i], __a); + return __s; + } + + static constexpr char_type + to_char_type(const int_type& __c) noexcept + { return char_type(__c); } + + static constexpr int_type + to_int_type(const char_type& __c) noexcept + { return int_type(__c); } + + static constexpr bool + eq_int_type(const int_type& __c1, const int_type& __c2) noexcept + { return __c1 == __c2; } + + static constexpr int_type + eof() noexcept + { return static_cast<int_type>(-1); } + + static constexpr int_type + not_eof(const int_type& __c) noexcept + { return eq_int_type(__c, eof()) ? 0 : __c; } + }; + + +} +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/allocator.h" 1 3 +# 46 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/allocator.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++allocator.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++allocator.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/new_allocator.h" 1 3 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/new_allocator.h" 3 +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + using std::size_t; + using std::ptrdiff_t; +# 57 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/new_allocator.h" 3 + template<typename _Tp> + class new_allocator + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template<typename _Tp1> + struct rebind + { typedef new_allocator<_Tp1> other; }; + + + + + typedef std::true_type propagate_on_container_move_assignment; + + + new_allocator() noexcept { } + + new_allocator(const new_allocator&) noexcept { } + + template<typename _Tp1> + new_allocator(const new_allocator<_Tp1>&) noexcept { } + + ~new_allocator() noexcept { } + + pointer + address(reference __x) const noexcept + { return std::__addressof(__x); } + + const_pointer + address(const_reference __x) const noexcept + { return std::__addressof(__x); } + + + + pointer + allocate(size_type __n, const void* = 0) + { + if (__n > this->max_size()) + std::__throw_bad_alloc(); + + return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); + } + + + void + deallocate(pointer __p, size_type) + { ::operator delete(__p); } + + size_type + max_size() const noexcept + { return size_t(-1) / sizeof(_Tp); } + + + template<typename _Up, typename... _Args> + void + construct(_Up* __p, _Args&&... __args) + { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } + + template<typename _Up> + void + destroy(_Up* __p) { __p->~_Up(); } +# 135 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/new_allocator.h" 3 + }; + + template<typename _Tp> + inline bool + operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) + { return true; } + + template<typename _Tp> + inline bool + operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) + { return false; } + + +} +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++allocator.h" 2 3 + + +namespace std +{ +# 47 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++allocator.h" 3 + template<typename _Tp> + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +# 47 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/allocator.h" 2 3 + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + + template<> + class allocator<void> + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef void* pointer; + typedef const void* const_pointer; + typedef void value_type; + + template<typename _Tp1> + struct rebind + { typedef allocator<_Tp1> other; }; + + + + + typedef true_type propagate_on_container_move_assignment; + + }; +# 91 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/allocator.h" 3 + template<typename _Tp> + class allocator: public __allocator_base<_Tp> + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template<typename _Tp1> + struct rebind + { typedef allocator<_Tp1> other; }; + + + + + typedef true_type propagate_on_container_move_assignment; + + + allocator() throw() { } + + allocator(const allocator& __a) throw() + : __allocator_base<_Tp>(__a) { } + + template<typename _Tp1> + allocator(const allocator<_Tp1>&) throw() { } + + ~allocator() throw() { } + + + }; + + template<typename _T1, typename _T2> + inline bool + operator==(const allocator<_T1>&, const allocator<_T2>&) + noexcept + { return true; } + + template<typename _Tp> + inline bool + operator==(const allocator<_Tp>&, const allocator<_Tp>&) + noexcept + { return true; } + + template<typename _T1, typename _T2> + inline bool + operator!=(const allocator<_T1>&, const allocator<_T2>&) + noexcept + { return false; } + + template<typename _Tp> + inline bool + operator!=(const allocator<_Tp>&, const allocator<_Tp>&) + noexcept + { return false; } + + + + + + + extern template class allocator<char>; + extern template class allocator<wchar_t>; + + + + + + + template<typename _Alloc, bool = __is_empty(_Alloc)> + struct __alloc_swap + { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; + + template<typename _Alloc> + struct __alloc_swap<_Alloc, false> + { + static void + _S_do_it(_Alloc& __one, _Alloc& __two) noexcept + { + + if (__one != __two) + swap(__one, __two); + } + }; + + + template<typename _Alloc, bool = __is_empty(_Alloc)> + struct __alloc_neq + { + static bool + _S_do_it(const _Alloc&, const _Alloc&) + { return false; } + }; + + template<typename _Alloc> + struct __alloc_neq<_Alloc, false> + { + static bool + _S_do_it(const _Alloc& __one, const _Alloc& __two) + { return __one != __two; } + }; + + + template<typename _Tp, bool + = __or_<is_copy_constructible<typename _Tp::value_type>, + is_nothrow_move_constructible<typename _Tp::value_type>>::value> + struct __shrink_to_fit_aux + { static bool _S_do_it(_Tp&) noexcept { return false; } }; + + template<typename _Tp> + struct __shrink_to_fit_aux<_Tp, true> + { + static bool + _S_do_it(_Tp& __c) noexcept + { + + try + { + _Tp(__make_move_if_noexcept_iterator(__c.begin()), + __make_move_if_noexcept_iterator(__c.end()), + __c.get_allocator()).swap(__c); + return true; + } + catch(...) + { return false; } + + + + } + }; + + + +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++locale.h" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++locale.h" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++locale.h" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/clocale" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/clocale" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/clocale" 3 + + +# 1 "/mnt/odroid-c2/usr/include/locale.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/locale.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 29 "/mnt/odroid-c2/usr/include/locale.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/locale.h" 1 3 4 +# 30 "/mnt/odroid-c2/usr/include/locale.h" 2 3 4 + +extern "C" { +# 50 "/mnt/odroid-c2/usr/include/locale.h" 3 4 + + + +struct lconv +{ + + + char *decimal_point; + char *thousands_sep; + + + + + + char *grouping; + + + + + + char *int_curr_symbol; + char *currency_symbol; + char *mon_decimal_point; + char *mon_thousands_sep; + char *mon_grouping; + char *positive_sign; + char *negative_sign; + char int_frac_digits; + char frac_digits; + + char p_cs_precedes; + + char p_sep_by_space; + + char n_cs_precedes; + + char n_sep_by_space; + + + + + + + char p_sign_posn; + char n_sign_posn; + + + char int_p_cs_precedes; + + char int_p_sep_by_space; + + char int_n_cs_precedes; + + char int_n_sep_by_space; + + + + + + + char int_p_sign_posn; + char int_n_sign_posn; +# 120 "/mnt/odroid-c2/usr/include/locale.h" 3 4 +}; + + + +extern char *setlocale (int __category, const char *__locale) throw (); + + +extern struct lconv *localeconv (void) throw (); + + +# 151 "/mnt/odroid-c2/usr/include/locale.h" 3 4 +extern __locale_t newlocale (int __category_mask, const char *__locale, + __locale_t __base) throw (); +# 186 "/mnt/odroid-c2/usr/include/locale.h" 3 4 +extern __locale_t duplocale (__locale_t __dataset) throw (); + + + +extern void freelocale (__locale_t __dataset) throw (); + + + + + + +extern __locale_t uselocale (__locale_t __dataset) throw (); + + + + + + + +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/clocale" 2 3 +# 51 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/clocale" 3 +namespace std +{ + using ::lconv; + using ::setlocale; + using ::localeconv; +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++locale.h" 2 3 + + + + + + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + extern "C" __typeof(uselocale) __uselocale; + + +} + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + typedef __locale_t __c_locale; + + + + + + inline int + __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), + char* __out, + const int __size __attribute__ ((__unused__)), + const char* __fmt, ...) + { + + __c_locale __old = __gnu_cxx::__uselocale(__cloc); +# 88 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/c++locale.h" 3 + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + + + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + + + + + __builtin_va_end(__args); + + + __gnu_cxx::__uselocale(__old); + + + + + + + + return __ret; + } + + +} +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iosfwd" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iosfwd" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iosfwd" 3 + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 74 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iosfwd" 3 + class ios_base; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ios; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_streambuf; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_istream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ostream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_iostream; + + +namespace __cxx11 { + + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_stringbuf; + + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_istringstream; + + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_ostringstream; + + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_stringstream; + +} + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_filebuf; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ifstream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ofstream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_fstream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class istreambuf_iterator; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class ostreambuf_iterator; + + + + typedef basic_ios<char> ios; + + + typedef basic_streambuf<char> streambuf; + + + typedef basic_istream<char> istream; + + + typedef basic_ostream<char> ostream; + + + typedef basic_iostream<char> iostream; + + + typedef basic_stringbuf<char> stringbuf; + + + typedef basic_istringstream<char> istringstream; + + + typedef basic_ostringstream<char> ostringstream; + + + typedef basic_stringstream<char> stringstream; + + + typedef basic_filebuf<char> filebuf; + + + typedef basic_ifstream<char> ifstream; + + + typedef basic_ofstream<char> ofstream; + + + typedef basic_fstream<char> fstream; + + + + typedef basic_ios<wchar_t> wios; + + + typedef basic_streambuf<wchar_t> wstreambuf; + + + typedef basic_istream<wchar_t> wistream; + + + typedef basic_ostream<wchar_t> wostream; + + + typedef basic_iostream<wchar_t> wiostream; + + + typedef basic_stringbuf<wchar_t> wstringbuf; + + + typedef basic_istringstream<wchar_t> wistringstream; + + + typedef basic_ostringstream<wchar_t> wostringstream; + + + typedef basic_stringstream<wchar_t> wstringstream; + + + typedef basic_filebuf<wchar_t> wfilebuf; + + + typedef basic_ifstream<wchar_t> wifstream; + + + typedef basic_ofstream<wchar_t> wofstream; + + + typedef basic_fstream<wchar_t> wfstream; + + + + +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 3 + + +# 1 "/mnt/odroid-c2/usr/include/ctype.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 +extern "C" { +# 46 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 +enum +{ + _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), + _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), + _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), + _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), + _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), + _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), + _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), + _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), + _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), + _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), + _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), + _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) +}; +# 79 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 +extern const unsigned short int **__ctype_b_loc (void) + throw () __attribute__ ((__const__)); +extern const __int32_t **__ctype_tolower_loc (void) + throw () __attribute__ ((__const__)); +extern const __int32_t **__ctype_toupper_loc (void) + throw () __attribute__ ((__const__)); +# 104 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 + + + + + + +extern int isalnum (int) throw (); +extern int isalpha (int) throw (); +extern int iscntrl (int) throw (); +extern int isdigit (int) throw (); +extern int islower (int) throw (); +extern int isgraph (int) throw (); +extern int isprint (int) throw (); +extern int ispunct (int) throw (); +extern int isspace (int) throw (); +extern int isupper (int) throw (); +extern int isxdigit (int) throw (); + + + +extern int tolower (int __c) throw (); + + +extern int toupper (int __c) throw (); + + + + + + + + +extern int isblank (int) throw (); + + + + + + +extern int isctype (int __c, int __mask) throw (); + + + + + + +extern int isascii (int __c) throw (); + + + +extern int toascii (int __c) throw (); + + + +extern int _toupper (int) throw (); +extern int _tolower (int) throw (); +# 271 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 +extern int isalnum_l (int, __locale_t) throw (); +extern int isalpha_l (int, __locale_t) throw (); +extern int iscntrl_l (int, __locale_t) throw (); +extern int isdigit_l (int, __locale_t) throw (); +extern int islower_l (int, __locale_t) throw (); +extern int isgraph_l (int, __locale_t) throw (); +extern int isprint_l (int, __locale_t) throw (); +extern int ispunct_l (int, __locale_t) throw (); +extern int isspace_l (int, __locale_t) throw (); +extern int isupper_l (int, __locale_t) throw (); +extern int isxdigit_l (int, __locale_t) throw (); + +extern int isblank_l (int, __locale_t) throw (); + + + +extern int __tolower_l (int __c, __locale_t __l) throw (); +extern int tolower_l (int __c, __locale_t __l) throw (); + + +extern int __toupper_l (int __c, __locale_t __l) throw (); +extern int toupper_l (int __c, __locale_t __l) throw (); +# 347 "/mnt/odroid-c2/usr/include/ctype.h" 3 4 +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 2 3 +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 3 +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 +{ + using ::isblank; +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 55 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/localefwd.h" 3 + class locale; + + template<typename _Facet> + bool + has_facet(const locale&) throw(); + + template<typename _Facet> + const _Facet& + use_facet(const locale&); + + + template<typename _CharT> + bool + isspace(_CharT, const locale&); + + template<typename _CharT> + bool + isprint(_CharT, const locale&); + + template<typename _CharT> + bool + iscntrl(_CharT, const locale&); + + template<typename _CharT> + bool + isupper(_CharT, const locale&); + + template<typename _CharT> + bool + islower(_CharT, const locale&); + + template<typename _CharT> + bool + isalpha(_CharT, const locale&); + + template<typename _CharT> + bool + isdigit(_CharT, const locale&); + + template<typename _CharT> + bool + ispunct(_CharT, const locale&); + + template<typename _CharT> + bool + isxdigit(_CharT, const locale&); + + template<typename _CharT> + bool + isalnum(_CharT, const locale&); + + template<typename _CharT> + bool + isgraph(_CharT, const locale&); + + + template<typename _CharT> + bool + isblank(_CharT, const locale&); + + + template<typename _CharT> + _CharT + toupper(_CharT, const locale&); + + template<typename _CharT> + _CharT + tolower(_CharT, const locale&); + + + class ctype_base; + template<typename _CharT> + class ctype; + template<> class ctype<char>; + + template<> class ctype<wchar_t>; + + template<typename _CharT> + class ctype_byname; + + + class codecvt_base; + template<typename _InternT, typename _ExternT, typename _StateT> + class codecvt; + template<> class codecvt<char, char, mbstate_t>; + + template<> class codecvt<wchar_t, char, mbstate_t>; + + template<typename _InternT, typename _ExternT, typename _StateT> + class codecvt_byname; + + + + template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > + class num_get; + template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > + class num_put; + +namespace __cxx11 { + template<typename _CharT> class numpunct; + template<typename _CharT> class numpunct_byname; +} + +namespace __cxx11 { + + template<typename _CharT> + class collate; + template<typename _CharT> + class collate_byname; +} + + + class time_base; +namespace __cxx11 { + template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > + class time_get; + template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > + class time_get_byname; +} + template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > + class time_put; + template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > + class time_put_byname; + + + class money_base; +namespace __cxx11 { + template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > + class money_get; + template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > + class money_put; +} +namespace __cxx11 { + template<typename _CharT, bool _Intl = false> + class moneypunct; + template<typename _CharT, bool _Intl = false> + class moneypunct_byname; +} + + + class messages_base; +namespace __cxx11 { + template<typename _CharT> + class messages; + template<typename _CharT> + class messages_byname; +} + + +} +# 44 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream_insert.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream_insert.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream_insert.h" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cxxabi_forced.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cxxabi_forced.h" 3 + +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/cxxabi_forced.h" 3 + +#pragma GCC visibility push(default) + + +namespace __cxxabiv1 +{ + + + + + + + + class __forced_unwind + { + virtual ~__forced_unwind() throw(); + + + virtual void __pure_dummy() = 0; + }; +} + + +#pragma GCC visibility pop +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream_insert.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + inline void + __ostream_write(basic_ostream<_CharT, _Traits>& __out, + const _CharT* __s, streamsize __n) + { + typedef basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const streamsize __put = __out.rdbuf()->sputn(__s, __n); + if (__put != __n) + __out.setstate(__ios_base::badbit); + } + + template<typename _CharT, typename _Traits> + inline void + __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) + { + typedef basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const _CharT __c = __out.fill(); + for (; __n > 0; --__n) + { + const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); + if (_Traits::eq_int_type(__put, _Traits::eof())) + { + __out.setstate(__ios_base::badbit); + break; + } + } + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + __ostream_insert(basic_ostream<_CharT, _Traits>& __out, + const _CharT* __s, streamsize __n) + { + typedef basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + typename __ostream_type::sentry __cerb(__out); + if (__cerb) + { + try + { + const streamsize __w = __out.width(); + if (__w > __n) + { + const bool __left = ((__out.flags() + & __ios_base::adjustfield) + == __ios_base::left); + if (!__left) + __ostream_fill(__out, __w - __n); + if (__out.good()) + __ostream_write(__out, __s, __n); + if (__left && __out.good()) + __ostream_fill(__out, __w - __n); + } + else + __ostream_write(__out, __s, __n); + __out.width(0); + } + catch(__cxxabiv1::__forced_unwind&) + { + __out._M_setstate(__ios_base::badbit); + throw; + } + catch(...) + { __out._M_setstate(__ios_base::badbit); } + } + return __out; + } + + + + + extern template ostream& __ostream_insert(ostream&, const char*, streamsize); + + + extern template wostream& __ostream_insert(wostream&, const wchar_t*, + streamsize); + + + + +} +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 1 3 +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 104 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Arg, typename _Result> + struct unary_function + { + + typedef _Arg argument_type; + + + typedef _Result result_type; + }; + + + + + template<typename _Arg1, typename _Arg2, typename _Result> + struct binary_function + { + + typedef _Arg1 first_argument_type; + + + typedef _Arg2 second_argument_type; + + + typedef _Result result_type; + }; +# 144 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + struct __is_transparent; + + template<typename _Tp = void> + struct plus; + + template<typename _Tp = void> + struct minus; + + template<typename _Tp = void> + struct multiplies; + + template<typename _Tp = void> + struct divides; + + template<typename _Tp = void> + struct modulus; + + template<typename _Tp = void> + struct negate; + + + + template<typename _Tp> + struct plus : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x + __y; } + }; + + + template<typename _Tp> + struct minus : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x - __y; } + }; + + + template<typename _Tp> + struct multiplies : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x * __y; } + }; + + + template<typename _Tp> + struct divides : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x / __y; } + }; + + + template<typename _Tp> + struct modulus : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x % __y; } + }; + + + template<typename _Tp> + struct negate : public unary_function<_Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x) const + { return -__x; } + }; + + + + + + + template<> + struct plus<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct minus<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct multiplies<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct divides<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct modulus<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct negate<void> + { + template <typename _Tp> + constexpr + auto + operator()(_Tp&& __t) const + noexcept(noexcept(-std::forward<_Tp>(__t))) + -> decltype(-std::forward<_Tp>(__t)) + { return -std::forward<_Tp>(__t); } + + typedef __is_transparent is_transparent; + }; +# 331 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Tp = void> + struct equal_to; + + template<typename _Tp = void> + struct not_equal_to; + + template<typename _Tp = void> + struct greater; + + template<typename _Tp = void> + struct less; + + template<typename _Tp = void> + struct greater_equal; + + template<typename _Tp = void> + struct less_equal; + + + + template<typename _Tp> + struct equal_to : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x == __y; } + }; + + + template<typename _Tp> + struct not_equal_to : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x != __y; } + }; + + + template<typename _Tp> + struct greater : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x > __y; } + }; + + + template<typename _Tp> + struct less : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x < __y; } + }; + + + template<typename _Tp> + struct greater_equal : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x >= __y; } + }; + + + template<typename _Tp> + struct less_equal : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x <= __y; } + }; + + + + template<> + struct equal_to<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct not_equal_to<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct greater<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct less<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct greater_equal<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct less_equal<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; +# 513 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Tp = void> + struct logical_and; + + template<typename _Tp = void> + struct logical_or; + + template<typename _Tp = void> + struct logical_not; + + + + template<typename _Tp> + struct logical_and : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x && __y; } + }; + + + template<typename _Tp> + struct logical_or : public binary_function<_Tp, _Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x || __y; } + }; + + + template<typename _Tp> + struct logical_not : public unary_function<_Tp, bool> + { + constexpr + bool + operator()(const _Tp& __x) const + { return !__x; } + }; + + + + template<> + struct logical_and<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct logical_or<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + + template<> + struct logical_not<void> + { + template <typename _Tp> + constexpr + auto + operator()(_Tp&& __t) const + noexcept(noexcept(!std::forward<_Tp>(__t))) + -> decltype(!std::forward<_Tp>(__t)) + { return !std::forward<_Tp>(__t); } + + typedef __is_transparent is_transparent; + }; + + + + + template<typename _Tp = void> + struct bit_and; + + template<typename _Tp = void> + struct bit_or; + + template<typename _Tp = void> + struct bit_xor; + + template<typename _Tp = void> + struct bit_not; + + + + + template<typename _Tp> + struct bit_and : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x & __y; } + }; + + template<typename _Tp> + struct bit_or : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x | __y; } + }; + + template<typename _Tp> + struct bit_xor : public binary_function<_Tp, _Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x ^ __y; } + }; + + template<typename _Tp> + struct bit_not : public unary_function<_Tp, _Tp> + { + constexpr + _Tp + operator()(const _Tp& __x) const + { return ~__x; } + }; + + + template <> + struct bit_and<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + template <> + struct bit_or<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + template <> + struct bit_xor<void> + { + template <typename _Tp, typename _Up> + constexpr + auto + operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) + -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) + { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } + + typedef __is_transparent is_transparent; + }; + + template <> + struct bit_not<void> + { + template <typename _Tp> + constexpr + auto + operator()(_Tp&& __t) const + noexcept(noexcept(~std::forward<_Tp>(__t))) + -> decltype(~std::forward<_Tp>(__t)) + { return ~std::forward<_Tp>(__t); } + + typedef __is_transparent is_transparent; + }; +# 741 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Predicate> + class unary_negate + : public unary_function<typename _Predicate::argument_type, bool> + { + protected: + _Predicate _M_pred; + + public: + constexpr + explicit + unary_negate(const _Predicate& __x) : _M_pred(__x) { } + + constexpr + bool + operator()(const typename _Predicate::argument_type& __x) const + { return !_M_pred(__x); } + }; + + + template<typename _Predicate> + constexpr + inline unary_negate<_Predicate> + not1(const _Predicate& __pred) + { return unary_negate<_Predicate>(__pred); } + + + template<typename _Predicate> + class binary_negate + : public binary_function<typename _Predicate::first_argument_type, + typename _Predicate::second_argument_type, bool> + { + protected: + _Predicate _M_pred; + + public: + constexpr + explicit + binary_negate(const _Predicate& __x) : _M_pred(__x) { } + + constexpr + bool + operator()(const typename _Predicate::first_argument_type& __x, + const typename _Predicate::second_argument_type& __y) const + { return !_M_pred(__x, __y); } + }; + + + template<typename _Predicate> + constexpr + inline binary_negate<_Predicate> + not2(const _Predicate& __pred) + { return binary_negate<_Predicate>(__pred); } +# 818 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Arg, typename _Result> + class pointer_to_unary_function : public unary_function<_Arg, _Result> + { + protected: + _Result (*_M_ptr)(_Arg); + + public: + pointer_to_unary_function() { } + + explicit + pointer_to_unary_function(_Result (*__x)(_Arg)) + : _M_ptr(__x) { } + + _Result + operator()(_Arg __x) const + { return _M_ptr(__x); } + }; + + + template<typename _Arg, typename _Result> + inline pointer_to_unary_function<_Arg, _Result> + ptr_fun(_Result (*__x)(_Arg)) + { return pointer_to_unary_function<_Arg, _Result>(__x); } + + + template<typename _Arg1, typename _Arg2, typename _Result> + class pointer_to_binary_function + : public binary_function<_Arg1, _Arg2, _Result> + { + protected: + _Result (*_M_ptr)(_Arg1, _Arg2); + + public: + pointer_to_binary_function() { } + + explicit + pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) + : _M_ptr(__x) { } + + _Result + operator()(_Arg1 __x, _Arg2 __y) const + { return _M_ptr(__x, __y); } + }; + + + template<typename _Arg1, typename _Arg2, typename _Result> + inline pointer_to_binary_function<_Arg1, _Arg2, _Result> + ptr_fun(_Result (*__x)(_Arg1, _Arg2)) + { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } + + + template<typename _Tp> + struct _Identity + : public unary_function<_Tp,_Tp> + { + _Tp& + operator()(_Tp& __x) const + { return __x; } + + const _Tp& + operator()(const _Tp& __x) const + { return __x; } + }; + + template<typename _Pair> + struct _Select1st + : public unary_function<_Pair, typename _Pair::first_type> + { + typename _Pair::first_type& + operator()(_Pair& __x) const + { return __x.first; } + + const typename _Pair::first_type& + operator()(const _Pair& __x) const + { return __x.first; } + + + template<typename _Pair2> + typename _Pair2::first_type& + operator()(_Pair2& __x) const + { return __x.first; } + + template<typename _Pair2> + const typename _Pair2::first_type& + operator()(const _Pair2& __x) const + { return __x.first; } + + }; + + template<typename _Pair> + struct _Select2nd + : public unary_function<_Pair, typename _Pair::second_type> + { + typename _Pair::second_type& + operator()(_Pair& __x) const + { return __x.second; } + + const typename _Pair::second_type& + operator()(const _Pair& __x) const + { return __x.second; } + }; +# 938 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 3 + template<typename _Ret, typename _Tp> + class mem_fun_t : public unary_function<_Tp*, _Ret> + { + public: + explicit + mem_fun_t(_Ret (_Tp::*__pf)()) + : _M_f(__pf) { } + + _Ret + operator()(_Tp* __p) const + { return (__p->*_M_f)(); } + + private: + _Ret (_Tp::*_M_f)(); + }; + + + + template<typename _Ret, typename _Tp> + class const_mem_fun_t : public unary_function<const _Tp*, _Ret> + { + public: + explicit + const_mem_fun_t(_Ret (_Tp::*__pf)() const) + : _M_f(__pf) { } + + _Ret + operator()(const _Tp* __p) const + { return (__p->*_M_f)(); } + + private: + _Ret (_Tp::*_M_f)() const; + }; + + + + template<typename _Ret, typename _Tp> + class mem_fun_ref_t : public unary_function<_Tp, _Ret> + { + public: + explicit + mem_fun_ref_t(_Ret (_Tp::*__pf)()) + : _M_f(__pf) { } + + _Ret + operator()(_Tp& __r) const + { return (__r.*_M_f)(); } + + private: + _Ret (_Tp::*_M_f)(); + }; + + + + template<typename _Ret, typename _Tp> + class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> + { + public: + explicit + const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) + : _M_f(__pf) { } + + _Ret + operator()(const _Tp& __r) const + { return (__r.*_M_f)(); } + + private: + _Ret (_Tp::*_M_f)() const; + }; + + + + template<typename _Ret, typename _Tp, typename _Arg> + class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> + { + public: + explicit + mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) + : _M_f(__pf) { } + + _Ret + operator()(_Tp* __p, _Arg __x) const + { return (__p->*_M_f)(__x); } + + private: + _Ret (_Tp::*_M_f)(_Arg); + }; + + + + template<typename _Ret, typename _Tp, typename _Arg> + class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> + { + public: + explicit + const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) + : _M_f(__pf) { } + + _Ret + operator()(const _Tp* __p, _Arg __x) const + { return (__p->*_M_f)(__x); } + + private: + _Ret (_Tp::*_M_f)(_Arg) const; + }; + + + + template<typename _Ret, typename _Tp, typename _Arg> + class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> + { + public: + explicit + mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) + : _M_f(__pf) { } + + _Ret + operator()(_Tp& __r, _Arg __x) const + { return (__r.*_M_f)(__x); } + + private: + _Ret (_Tp::*_M_f)(_Arg); + }; + + + + template<typename _Ret, typename _Tp, typename _Arg> + class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> + { + public: + explicit + const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) + : _M_f(__pf) { } + + _Ret + operator()(const _Tp& __r, _Arg __x) const + { return (__r.*_M_f)(__x); } + + private: + _Ret (_Tp::*_M_f)(_Arg) const; + }; + + + + template<typename _Ret, typename _Tp> + inline mem_fun_t<_Ret, _Tp> + mem_fun(_Ret (_Tp::*__f)()) + { return mem_fun_t<_Ret, _Tp>(__f); } + + template<typename _Ret, typename _Tp> + inline const_mem_fun_t<_Ret, _Tp> + mem_fun(_Ret (_Tp::*__f)() const) + { return const_mem_fun_t<_Ret, _Tp>(__f); } + + template<typename _Ret, typename _Tp> + inline mem_fun_ref_t<_Ret, _Tp> + mem_fun_ref(_Ret (_Tp::*__f)()) + { return mem_fun_ref_t<_Ret, _Tp>(__f); } + + template<typename _Ret, typename _Tp> + inline const_mem_fun_ref_t<_Ret, _Tp> + mem_fun_ref(_Ret (_Tp::*__f)() const) + { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } + + template<typename _Ret, typename _Tp, typename _Arg> + inline mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template<typename _Ret, typename _Tp, typename _Arg> + inline const_mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template<typename _Ret, typename _Tp, typename _Arg> + inline mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + + template<typename _Ret, typename _Tp, typename _Arg> + inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + + + + +} + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/backward/binders.h" 1 3 +# 60 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/backward/binders.h" 3 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 107 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/backward/binders.h" 3 + template<typename _Operation> + class binder1st + : public unary_function<typename _Operation::second_argument_type, + typename _Operation::result_type> + { + protected: + _Operation op; + typename _Operation::first_argument_type value; + + public: + binder1st(const _Operation& __x, + const typename _Operation::first_argument_type& __y) + : op(__x), value(__y) { } + + typename _Operation::result_type + operator()(const typename _Operation::second_argument_type& __x) const + { return op(value, __x); } + + + + typename _Operation::result_type + operator()(typename _Operation::second_argument_type& __x) const + { return op(value, __x); } + } __attribute__ ((__deprecated__)); + + + template<typename _Operation, typename _Tp> + inline binder1st<_Operation> + bind1st(const _Operation& __fn, const _Tp& __x) + { + typedef typename _Operation::first_argument_type _Arg1_type; + return binder1st<_Operation>(__fn, _Arg1_type(__x)); + } + + + template<typename _Operation> + class binder2nd + : public unary_function<typename _Operation::first_argument_type, + typename _Operation::result_type> + { + protected: + _Operation op; + typename _Operation::second_argument_type value; + + public: + binder2nd(const _Operation& __x, + const typename _Operation::second_argument_type& __y) + : op(__x), value(__y) { } + + typename _Operation::result_type + operator()(const typename _Operation::first_argument_type& __x) const + { return op(__x, value); } + + + + typename _Operation::result_type + operator()(typename _Operation::first_argument_type& __x) const + { return op(__x, value); } + } __attribute__ ((__deprecated__)); + + + template<typename _Operation, typename _Tp> + inline binder2nd<_Operation> + bind2nd(const _Operation& __fn, const _Tp& __x) + { + typedef typename _Operation::second_argument_type _Arg2_type; + return binder2nd<_Operation>(__fn, _Arg2_type(__x)); + } + + + +} + +#pragma GCC diagnostic pop +# 1129 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_function.h" 2 3 +# 49 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/range_access.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/range_access.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/range_access.h" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<class _Container> + inline auto + begin(_Container& __cont) -> decltype(__cont.begin()) + { return __cont.begin(); } + + + + + + + template<class _Container> + inline auto + begin(const _Container& __cont) -> decltype(__cont.begin()) + { return __cont.begin(); } + + + + + + + template<class _Container> + inline auto + end(_Container& __cont) -> decltype(__cont.end()) + { return __cont.end(); } + + + + + + + template<class _Container> + inline auto + end(const _Container& __cont) -> decltype(__cont.end()) + { return __cont.end(); } + + + + + + template<class _Tp, size_t _Nm> + inline constexpr _Tp* + begin(_Tp (&__arr)[_Nm]) + { return __arr; } + + + + + + + template<class _Tp, size_t _Nm> + inline constexpr _Tp* + end(_Tp (&__arr)[_Nm]) + { return __arr + _Nm; } + + + + template<typename _Tp> class valarray; + + template<typename _Tp> _Tp* begin(valarray<_Tp>&); + template<typename _Tp> const _Tp* begin(const valarray<_Tp>&); + template<typename _Tp> _Tp* end(valarray<_Tp>&); + template<typename _Tp> const _Tp* end(const valarray<_Tp>&); + + + + + + + template<class _Container> + inline constexpr auto + cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) + -> decltype(std::begin(__cont)) + { return std::begin(__cont); } + + + + + + + template<class _Container> + inline constexpr auto + cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) + -> decltype(std::end(__cont)) + { return std::end(__cont); } + + + + + + + template<class _Container> + inline auto + rbegin(_Container& __cont) -> decltype(__cont.rbegin()) + { return __cont.rbegin(); } + + + + + + + template<class _Container> + inline auto + rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) + { return __cont.rbegin(); } + + + + + + + template<class _Container> + inline auto + rend(_Container& __cont) -> decltype(__cont.rend()) + { return __cont.rend(); } + + + + + + + template<class _Container> + inline auto + rend(const _Container& __cont) -> decltype(__cont.rend()) + { return __cont.rend(); } + + + + + + + template<class _Tp, size_t _Nm> + inline reverse_iterator<_Tp*> + rbegin(_Tp (&__arr)[_Nm]) + { return reverse_iterator<_Tp*>(__arr + _Nm); } + + + + + + + template<class _Tp, size_t _Nm> + inline reverse_iterator<_Tp*> + rend(_Tp (&__arr)[_Nm]) + { return reverse_iterator<_Tp*>(__arr); } + + + + + + + template<class _Tp> + inline reverse_iterator<const _Tp*> + rbegin(initializer_list<_Tp> __il) + { return reverse_iterator<const _Tp*>(__il.end()); } + + + + + + + template<class _Tp> + inline reverse_iterator<const _Tp*> + rend(initializer_list<_Tp> __il) + { return reverse_iterator<const _Tp*>(__il.begin()); } + + + + + + + template<class _Container> + inline auto + crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) + { return std::rbegin(__cont); } + + + + + + + template<class _Container> + inline auto + crend(const _Container& __cont) -> decltype(std::rend(__cont)) + { return std::rend(__cont); } + + + + +} +# 52 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 3 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr.h" 1 3 +# 30 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr.h" 3 +#pragma GCC visibility push(default) +# 148 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 1 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +# 1 "/mnt/odroid-c2/usr/include/pthread.h" 1 3 4 +# 23 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/sched.h" 1 3 4 +# 28 "/mnt/odroid-c2/usr/include/sched.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 29 "/mnt/odroid-c2/usr/include/sched.h" 2 3 4 + + + + + +# 1 "/mnt/odroid-c2/usr/include/time.h" 1 3 4 +# 35 "/mnt/odroid-c2/usr/include/sched.h" 2 3 4 +# 43 "/mnt/odroid-c2/usr/include/sched.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4 +# 72 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 +struct sched_param + { + int __sched_priority; + }; + +extern "C" { + + + +extern int clone (int (*__fn) (void *__arg), void *__child_stack, + int __flags, void *__arg, ...) throw (); + + +extern int unshare (int __flags) throw (); + + +extern int sched_getcpu (void) throw (); + + +extern int setns (int __fd, int __nstype) throw (); + + + +} + + + + + + + +struct __sched_param + { + int __sched_priority; + }; +# 118 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 +typedef unsigned long int __cpu_mask; + + + + + + +typedef struct +{ + __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; +} cpu_set_t; +# 201 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 +extern "C" { + +extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) + throw (); +extern cpu_set_t *__sched_cpualloc (size_t __count) throw () ; +extern void __sched_cpufree (cpu_set_t *__set) throw (); + +} +# 44 "/mnt/odroid-c2/usr/include/sched.h" 2 3 4 + + + + +extern "C" { + + +extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) + throw (); + + +extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); + + +extern int sched_setscheduler (__pid_t __pid, int __policy, + const struct sched_param *__param) throw (); + + +extern int sched_getscheduler (__pid_t __pid) throw (); + + +extern int sched_yield (void) throw (); + + +extern int sched_get_priority_max (int __algorithm) throw (); + + +extern int sched_get_priority_min (int __algorithm) throw (); + + +extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); +# 118 "/mnt/odroid-c2/usr/include/sched.h" 3 4 +extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, + const cpu_set_t *__cpuset) throw (); + + +extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, + cpu_set_t *__cpuset) throw (); + + +} +# 24 "/mnt/odroid-c2/usr/include/pthread.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/time.h" 1 3 4 +# 29 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern "C" { + + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 38 "/mnt/odroid-c2/usr/include/time.h" 2 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4 +# 88 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4 +# 25 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4 +struct timex +{ + unsigned int modes; + __syscall_slong_t offset; + __syscall_slong_t freq; + __syscall_slong_t maxerror; + __syscall_slong_t esterror; + int status; + __syscall_slong_t constant; + __syscall_slong_t precision; + __syscall_slong_t tolerance; + struct timeval time; + __syscall_slong_t tick; + __syscall_slong_t ppsfreq; + __syscall_slong_t jitter; + int shift; + __syscall_slong_t stabil; + __syscall_slong_t jitcnt; + __syscall_slong_t calcnt; + __syscall_slong_t errcnt; + __syscall_slong_t stbcnt; + + int tai; + + + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; +}; +# 89 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4 + +extern "C" { + + +extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); + +} +# 42 "/mnt/odroid-c2/usr/include/time.h" 2 3 4 +# 131 "/mnt/odroid-c2/usr/include/time.h" 3 4 + + +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + + + long int tm_gmtoff; + const char *tm_zone; + + + + +}; + + + + + + + + +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; + + +struct sigevent; +# 186 "/mnt/odroid-c2/usr/include/time.h" 3 4 + + + +extern clock_t clock (void) throw (); + + +extern time_t time (time_t *__timer) throw (); + + +extern double difftime (time_t __time1, time_t __time0) + throw () __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) throw (); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp) throw (); + + + + + +extern char *strptime (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp) + throw (); + + + + + + + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp, + __locale_t __loc) throw (); + + + +extern char *strptime_l (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp, + __locale_t __loc) throw (); + + + + + + +extern struct tm *gmtime (const time_t *__timer) throw (); + + + +extern struct tm *localtime (const time_t *__timer) throw (); + + + + + +extern struct tm *gmtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + +extern struct tm *localtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) throw (); + + + + + +extern char *asctime (const struct tm *__tp) throw (); + + +extern char *ctime (const time_t *__timer) throw (); + + + + + + + +extern char *asctime_r (const struct tm *__restrict __tp, + char *__restrict __buf) throw (); + + +extern char *ctime_r (const time_t *__restrict __timer, + char *__restrict __buf) throw (); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) throw (); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (const time_t *__when) throw (); +# 319 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) throw (); + + +extern time_t timelocal (struct tm *__tp) throw (); + + +extern int dysize (int __year) throw () __attribute__ ((__const__)); +# 334 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern int nanosleep (const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); + + +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) + throw (); + + + + + + +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + const struct timespec *__req, + struct timespec *__rem); + + +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) throw (); + + +extern int timer_delete (timer_t __timerid) throw (); + + +extern int timer_settime (timer_t __timerid, int __flags, + const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) throw (); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + throw (); + + +extern int timer_getoverrun (timer_t __timerid) throw (); + + + + + +extern int timespec_get (struct timespec *__ts, int __base) + throw () __attribute__ ((__nonnull__ (1))); +# 403 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern int getdate_err; +# 412 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern struct tm *getdate (const char *__string); +# 426 "/mnt/odroid-c2/usr/include/time.h" 3 4 +extern int getdate_r (const char *__restrict __string, + struct tm *__restrict __resbufp); + + +} +# 25 "/mnt/odroid-c2/usr/include/pthread.h" 2 3 4 + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4 +# 30 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4 +__extension__ typedef unsigned long long __jmp_buf [22]; +# 28 "/mnt/odroid-c2/usr/include/pthread.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 +# 29 "/mnt/odroid-c2/usr/include/pthread.h" 2 3 4 + + + +enum +{ + PTHREAD_CREATE_JOINABLE, + + PTHREAD_CREATE_DETACHED + +}; + + + +enum +{ + PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_ADAPTIVE_NP + + , + PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL + + + + , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP + +}; + + + + +enum +{ + PTHREAD_MUTEX_STALLED, + PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, + PTHREAD_MUTEX_ROBUST, + PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST +}; + + + + + +enum +{ + PTHREAD_PRIO_NONE, + PTHREAD_PRIO_INHERIT, + PTHREAD_PRIO_PROTECT +}; +# 114 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +enum +{ + PTHREAD_RWLOCK_PREFER_READER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, + PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP +}; +# 155 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +enum +{ + PTHREAD_INHERIT_SCHED, + + PTHREAD_EXPLICIT_SCHED + +}; + + + +enum +{ + PTHREAD_SCOPE_SYSTEM, + + PTHREAD_SCOPE_PROCESS + +}; + + + +enum +{ + PTHREAD_PROCESS_PRIVATE, + + PTHREAD_PROCESS_SHARED + +}; +# 190 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +struct _pthread_cleanup_buffer +{ + void (*__routine) (void *); + void *__arg; + int __canceltype; + struct _pthread_cleanup_buffer *__prev; +}; + + +enum +{ + PTHREAD_CANCEL_ENABLE, + + PTHREAD_CANCEL_DISABLE + +}; +enum +{ + PTHREAD_CANCEL_DEFERRED, + + PTHREAD_CANCEL_ASYNCHRONOUS + +}; +# 228 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern "C" { + + + + +extern int pthread_create (pthread_t *__restrict __newthread, + const pthread_attr_t *__restrict __attr, + void *(*__start_routine) (void *), + void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); + + + + + +extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); + + + + + + + +extern int pthread_join (pthread_t __th, void **__thread_return); + + + + +extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); + + + + + + + +extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, + const struct timespec *__abstime); + + + + + + +extern int pthread_detach (pthread_t __th) throw (); + + + +extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); + + +extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) + throw () __attribute__ ((__const__)); + + + + + + + +extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_attr_destroy (pthread_attr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, + int *__detachstate) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, + int __detachstate) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, + size_t *__guardsize) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setguardsize (pthread_attr_t *__attr, + size_t __guardsize) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, + struct sched_param *__restrict __param) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, + const struct sched_param *__restrict + __param) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict + __attr, int *__restrict __policy) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict + __attr, int *__restrict __inherit) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, + int __inherit) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, + int *__restrict __scope) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict + __attr, void **__restrict __stackaddr) + throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); + + + + + +extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, + void *__stackaddr) + throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); + + +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict + __attr, size_t *__restrict __stacksize) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int pthread_attr_setstacksize (pthread_attr_t *__attr, + size_t __stacksize) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, + void **__restrict __stackaddr, + size_t *__restrict __stacksize) + throw () __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, + size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, + size_t __cpusetsize, + const cpu_set_t *__cpuset) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + +extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, + size_t __cpusetsize, + cpu_set_t *__cpuset) + throw () __attribute__ ((__nonnull__ (1, 3))); + + +extern int pthread_getattr_default_np (pthread_attr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_setattr_default_np (const pthread_attr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + + + +extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) + throw () __attribute__ ((__nonnull__ (2))); + + + + + + + +extern int pthread_setschedparam (pthread_t __target_thread, int __policy, + const struct sched_param *__param) + throw () __attribute__ ((__nonnull__ (3))); + + +extern int pthread_getschedparam (pthread_t __target_thread, + int *__restrict __policy, + struct sched_param *__restrict __param) + throw () __attribute__ ((__nonnull__ (2, 3))); + + +extern int pthread_setschedprio (pthread_t __target_thread, int __prio) + throw (); + + + + +extern int pthread_getname_np (pthread_t __target_thread, char *__buf, + size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))); + + +extern int pthread_setname_np (pthread_t __target_thread, const char *__name) + throw () __attribute__ ((__nonnull__ (2))); + + + + + +extern int pthread_getconcurrency (void) throw (); + + +extern int pthread_setconcurrency (int __level) throw (); + + + + + + + +extern int pthread_yield (void) throw (); + + + + +extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, + const cpu_set_t *__cpuset) + throw () __attribute__ ((__nonnull__ (3))); + + +extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, + cpu_set_t *__cpuset) + throw () __attribute__ ((__nonnull__ (3))); +# 494 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_once (pthread_once_t *__once_control, + void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); +# 506 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_setcancelstate (int __state, int *__oldstate); + + + +extern int pthread_setcanceltype (int __type, int *__oldtype); + + +extern int pthread_cancel (pthread_t __th); + + + + +extern void pthread_testcancel (void); + + + + +typedef struct +{ + struct + { + __jmp_buf __cancel_jmp_buf; + int __mask_was_saved; + } __cancel_jmp_buf[1]; + void *__pad[4]; +} __pthread_unwind_buf_t __attribute__ ((__aligned__)); +# 540 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +struct __pthread_cleanup_frame +{ + void (*__cancel_routine) (void *); + void *__cancel_arg; + int __do_it; + int __cancel_type; +}; + + + + +class __pthread_cleanup_class +{ + void (*__cancel_routine) (void *); + void *__cancel_arg; + int __do_it; + int __cancel_type; + + public: + __pthread_cleanup_class (void (*__fct) (void *), void *__arg) + : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } + ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } + void __setdoit (int __newval) { __do_it = __newval; } + void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, + &__cancel_type); } + void __restore () const { pthread_setcanceltype (__cancel_type, 0); } +}; +# 742 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +struct __jmp_buf_tag; +extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); + + + + + +extern int pthread_mutex_init (pthread_mutex_t *__mutex, + const pthread_mutexattr_t *__mutexattr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutex_lock (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, + const struct timespec *__restrict + __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_mutex_getprioceiling (const pthread_mutex_t * + __restrict __mutex, + int *__restrict __prioceiling) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, + int __prioceiling, + int *__restrict __old_ceiling) + throw () __attribute__ ((__nonnull__ (1, 3))); + + + + +extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); + +extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) + throw () __attribute__ ((__nonnull__ (1))); +# 806 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __pshared) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, + int __pshared) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict + __attr, int *__restrict __kind) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __protocol) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, + int __protocol) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __prioceiling) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, + int __prioceiling) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, + int *__robustness) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, + int *__robustness) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, + int __robustness) + throw () __attribute__ ((__nonnull__ (1))); + +extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, + int __robustness) + throw () __attribute__ ((__nonnull__ (1))); +# 888 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, + const pthread_rwlockattr_t *__restrict + __attr) throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, + const struct timespec *__restrict + __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, + const struct timespec *__restrict + __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) + throw () __attribute__ ((__nonnull__ (1))); + + + + + +extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pshared) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, + int __pshared) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pref) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, + int __pref) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int pthread_cond_init (pthread_cond_t *__restrict __cond, + const pthread_condattr_t *__restrict __cond_attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_cond_destroy (pthread_cond_t *__cond) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_cond_signal (pthread_cond_t *__cond) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_cond_broadcast (pthread_cond_t *__cond) + throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex) + __attribute__ ((__nonnull__ (1, 2))); +# 1000 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex, + const struct timespec *__restrict __abstime) + __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +extern int pthread_condattr_init (pthread_condattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_condattr_destroy (pthread_condattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_condattr_getpshared (const pthread_condattr_t * + __restrict __attr, + int *__restrict __pshared) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, + int __pshared) throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_condattr_getclock (const pthread_condattr_t * + __restrict __attr, + __clockid_t *__restrict __clock_id) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_condattr_setclock (pthread_condattr_t *__attr, + __clockid_t __clock_id) + throw () __attribute__ ((__nonnull__ (1))); +# 1044 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_spin_destroy (pthread_spinlock_t *__lock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_spin_lock (pthread_spinlock_t *__lock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_spin_trylock (pthread_spinlock_t *__lock) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_spin_unlock (pthread_spinlock_t *__lock) + throw () __attribute__ ((__nonnull__ (1))); + + + + + + +extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, + const pthread_barrierattr_t *__restrict + __attr, unsigned int __count) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_barrier_wait (pthread_barrier_t *__barrier) + throw () __attribute__ ((__nonnull__ (1))); + + + +extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * + __restrict __attr, + int *__restrict __pshared) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, + int __pshared) + throw () __attribute__ ((__nonnull__ (1))); +# 1111 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_key_create (pthread_key_t *__key, + void (*__destr_function) (void *)) + throw () __attribute__ ((__nonnull__ (1))); + + +extern int pthread_key_delete (pthread_key_t __key) throw (); + + +extern void *pthread_getspecific (pthread_key_t __key) throw (); + + +extern int pthread_setspecific (pthread_key_t __key, + const void *__pointer) throw () ; + + + + +extern int pthread_getcpuclockid (pthread_t __thread_id, + __clockid_t *__clock_id) + throw () __attribute__ ((__nonnull__ (2))); +# 1145 "/mnt/odroid-c2/usr/include/pthread.h" 3 4 +extern int pthread_atfork (void (*__prepare) (void), + void (*__parent) (void), + void (*__child) (void)) throw (); + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () +{ + return __thread1 == __thread2; +} + + +} +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 2 3 +# 47 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +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; +# 101 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"))); +static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"))); +static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"))); + +static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"))); +static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"))); +static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"))); +static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"))); +static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"))); + +static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); + +static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"))); + +static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"))); +static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"))); + +static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"))); + +static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"))); +static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"))); +static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"))); + +static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"))); +static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); +static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"))); +static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); +static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"))); +static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"))); + +static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"))); +static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"))); +static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"))); +static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"))); +static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"))); +# 236 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); +# 246 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) &__gthrw___pthread_key_create; + return __gthread_active_ptr != 0; +} +# 658 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +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; +} + + +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; +} + + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_pthread_mutex_unlock (__mutex); + else + return 0; +} +# 807 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +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_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} + + +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); +} +# 849 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr-default.h" 3 +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); +} +# 149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/gthr.h" 2 3 + + +#pragma GCC visibility pop +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/atomic_word.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/atomic_word.h" 3 +typedef int _Atomic_word; +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 2 3 + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + static inline _Atomic_word + __exchange_and_add(volatile _Atomic_word* __mem, int __val) + { return __atomic_fetch_add(__mem, __val, 4); } + + static inline void + __atomic_add(volatile _Atomic_word* __mem, int __val) + { __atomic_fetch_add(__mem, __val, 4); } +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/atomicity.h" 3 + static inline _Atomic_word + __exchange_and_add_single(_Atomic_word* __mem, int __val) + { + _Atomic_word __result = *__mem; + *__mem += __val; + return __result; + } + + static inline void + __atomic_add_single(_Atomic_word* __mem, int __val) + { *__mem += __val; } + + static inline _Atomic_word + __attribute__ ((__unused__)) + __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) + { + + if (__gthread_active_p()) + return __exchange_and_add(__mem, __val); + else + return __exchange_and_add_single(__mem, __val); + + + + } + + static inline void + __attribute__ ((__unused__)) + __atomic_add_dispatch(_Atomic_word* __mem, int __val) + { + + if (__gthread_active_p()) + __atomic_add(__mem, __val); + else + __atomic_add_single(__mem, __val); + + + + } + + +} +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 2 3 + + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + +namespace __cxx11 { +# 70 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + class basic_string + { + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<_CharT>::other _Char_alloc_type; + typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; + + + public: + typedef _Traits traits_type; + typedef typename _Traits::char_type value_type; + typedef _Char_alloc_type allocator_type; + typedef typename _Alloc_traits::size_type size_type; + typedef typename _Alloc_traits::difference_type difference_type; + typedef typename _Alloc_traits::reference reference; + typedef typename _Alloc_traits::const_reference const_reference; + typedef typename _Alloc_traits::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; + typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> + const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + + + static const size_type npos = static_cast<size_type>(-1); + + private: + + + + + typedef const_iterator __const_iterator; + + + + struct _Alloc_hider : allocator_type + { + _Alloc_hider(pointer __dat, const _Alloc& __a = _Alloc()) + : allocator_type(__a), _M_p(__dat) { } + + pointer _M_p; + }; + + _Alloc_hider _M_dataplus; + size_type _M_string_length; + + enum { _S_local_capacity = 15 / sizeof(_CharT) }; + + union + { + _CharT _M_local_buf[_S_local_capacity + 1]; + size_type _M_allocated_capacity; + }; + + void + _M_data(pointer __p) + { _M_dataplus._M_p = __p; } + + void + _M_length(size_type __length) + { _M_string_length = __length; } + + pointer + _M_data() const + { return _M_dataplus._M_p; } + + pointer + _M_local_data() + { + + return std::pointer_traits<pointer>::pointer_to(*_M_local_buf); + + + + } + + const_pointer + _M_local_data() const + { + + return std::pointer_traits<const_pointer>::pointer_to(*_M_local_buf); + + + + } + + void + _M_capacity(size_type __capacity) + { _M_allocated_capacity = __capacity; } + + void + _M_set_length(size_type __n) + { + _M_length(__n); + traits_type::assign(_M_data()[__n], _CharT()); + } + + bool + _M_is_local() const + { return _M_data() == _M_local_data(); } + + + pointer + _M_create(size_type&, size_type); + + void + _M_dispose() + { + if (!_M_is_local()) + _M_destroy(_M_allocated_capacity); + } + + void + _M_destroy(size_type __size) throw() + { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } + + + + template<typename _InIterator> + void + _M_construct_aux(_InIterator __beg, _InIterator __end, + std::__false_type) + { + typedef typename iterator_traits<_InIterator>::iterator_category _Tag; + _M_construct(__beg, __end, _Tag()); + } + + + + template<typename _Integer> + void + _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) + { _M_construct_aux_2(static_cast<size_type>(__beg), __end); } + + void + _M_construct_aux_2(size_type __req, _CharT __c) + { _M_construct(__req, __c); } + + template<typename _InIterator> + void + _M_construct(_InIterator __beg, _InIterator __end) + { + typedef typename std::__is_integer<_InIterator>::__type _Integral; + _M_construct_aux(__beg, __end, _Integral()); + } + + + template<typename _InIterator> + void + _M_construct(_InIterator __beg, _InIterator __end, + std::input_iterator_tag); + + + + template<typename _FwdIterator> + void + _M_construct(_FwdIterator __beg, _FwdIterator __end, + std::forward_iterator_tag); + + void + _M_construct(size_type __req, _CharT __c); + + allocator_type& + _M_get_allocator() + { return _M_dataplus; } + + const allocator_type& + _M_get_allocator() const + { return _M_dataplus; } + + private: +# 257 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + _M_check(size_type __pos, const char* __s) const + { + if (__pos > this->size()) + __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") + , + __s, __pos, this->size()); + return __pos; + } + + void + _M_check_length(size_type __n1, size_type __n2, const char* __s) const + { + if (this->max_size() - (this->size() - __n1) < __n2) + __throw_length_error((__s)); + } + + + + 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; + } + + + bool + _M_disjunct(const _CharT* __s) const noexcept + { + return (less<const _CharT*>()(__s, _M_data()) + || less<const _CharT*>()(_M_data() + this->size(), __s)); + } + + + + static void + _S_copy(_CharT* __d, const _CharT* __s, size_type __n) + { + if (__n == 1) + traits_type::assign(*__d, *__s); + else + traits_type::copy(__d, __s, __n); + } + + static void + _S_move(_CharT* __d, const _CharT* __s, size_type __n) + { + if (__n == 1) + traits_type::assign(*__d, *__s); + else + traits_type::move(__d, __s, __n); + } + + static void + _S_assign(_CharT* __d, size_type __n, _CharT __c) + { + if (__n == 1) + traits_type::assign(*__d, __c); + else + traits_type::assign(__d, __n, __c); + } + + + + template<class _Iterator> + static void + _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) + { + for (; __k1 != __k2; ++__k1, ++__p) + traits_type::assign(*__p, *__k1); + } + + static void + _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept + { _S_copy_chars(__p, __k1.base(), __k2.base()); } + + static void + _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) + noexcept + { _S_copy_chars(__p, __k1.base(), __k2.base()); } + + static void + _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept + { _S_copy(__p, __k1, __k2 - __k1); } + + static void + _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) + noexcept + { _S_copy(__p, __k1, __k2 - __k1); } + + static int + _S_compare(size_type __n1, size_type __n2) noexcept + { + const difference_type __d = difference_type(__n1 - __n2); + + if (__d > __gnu_cxx::__numeric_traits<int>::__max) + return __gnu_cxx::__numeric_traits<int>::__max; + else if (__d < __gnu_cxx::__numeric_traits<int>::__min) + return __gnu_cxx::__numeric_traits<int>::__min; + else + return int(__d); + } + + void + _M_assign(const basic_string& __rcs); + + void + _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, + size_type __len2); + + void + _M_erase(size_type __pos, size_type __n); + + public: + + + + + + + + basic_string() + + noexcept(is_nothrow_default_constructible<_Alloc>::value) + + : _M_dataplus(_M_local_data()) + { _M_set_length(0); } + + + + + explicit + basic_string(const _Alloc& __a) + : _M_dataplus(_M_local_data(), __a) + { _M_set_length(0); } + + + + + + basic_string(const basic_string& __str) + : _M_dataplus(_M_local_data(), __str._M_get_allocator()) + { _M_construct(__str._M_data(), __str._M_data() + __str.length()); } +# 410 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string(const basic_string& __str, size_type __pos, + size_type __n = npos) + : _M_dataplus(_M_local_data()) + { + const _CharT* __start = __str._M_data() + + __str._M_check(__pos, "basic_string::basic_string"); + _M_construct(__start, __start + __str._M_limit(__pos, __n)); + } +# 426 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string(const basic_string& __str, size_type __pos, + size_type __n, const _Alloc& __a) + : _M_dataplus(_M_local_data(), __a) + { + const _CharT* __start + = __str._M_data() + __str._M_check(__pos, "string::string"); + _M_construct(__start, __start + __str._M_limit(__pos, __n)); + } +# 444 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string(const _CharT* __s, size_type __n, + const _Alloc& __a = _Alloc()) + : _M_dataplus(_M_local_data(), __a) + { _M_construct(__s, __s + __n); } + + + + + + + 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); } + + + + + + + + basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) + : _M_dataplus(_M_local_data(), __a) + { _M_construct(__n, __c); } +# 476 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string(basic_string&& __str) noexcept + : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) + { + if (__str._M_is_local()) + { + traits_type::copy(_M_local_buf, __str._M_local_buf, + _S_local_capacity + 1); + } + else + { + _M_data(__str._M_data()); + _M_capacity(__str._M_allocated_capacity); + } + + + + + _M_length(__str.length()); + __str._M_data(__str._M_local_data()); + __str._M_set_length(0); + } + + + + + + + basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) + : _M_dataplus(_M_local_data(), __a) + { _M_construct(__l.begin(), __l.end()); } + + basic_string(const basic_string& __str, const _Alloc& __a) + : _M_dataplus(_M_local_data(), __a) + { _M_construct(__str.begin(), __str.end()); } + + basic_string(basic_string&& __str, const _Alloc& __a) + : _M_dataplus(_M_local_data(), __a) + { + if (__str.get_allocator() == __a) + *this = std::move(__str); + else + _M_construct(__str.begin(), __str.end()); + } +# 529 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + + + + basic_string(_InputIterator __beg, _InputIterator __end, + const _Alloc& __a = _Alloc()) + : _M_dataplus(_M_local_data(), __a) + { _M_construct(__beg, __end); } + + + + + ~basic_string() + { _M_dispose(); } + + + + + + basic_string& + operator=(const basic_string& __str) + { return this->assign(__str); } + + + + + + basic_string& + operator=(const _CharT* __s) + { return this->assign(__s); } +# 568 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + operator=(_CharT __c) + { + this->assign(1, __c); + return *this; + } +# 586 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + operator=(basic_string&& __str) + { + this->swap(__str); + return *this; + } + + + + + + basic_string& + operator=(initializer_list<_CharT> __l) + { + this->assign(__l.begin(), __l.size()); + return *this; + } + + + + + + + + iterator + begin() noexcept + { return iterator(_M_data()); } + + + + + + const_iterator + begin() const noexcept + { return const_iterator(_M_data()); } + + + + + + iterator + end() noexcept + { return iterator(_M_data() + this->size()); } + + + + + + const_iterator + end() const noexcept + { return const_iterator(_M_data() + this->size()); } + + + + + + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(this->end()); } + + + + + + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + + + + + + reverse_iterator + rend() noexcept + { return reverse_iterator(this->begin()); } + + + + + + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(this->begin()); } + + + + + + + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_data()); } + + + + + + const_iterator + cend() const noexcept + { return const_iterator(this->_M_data() + this->size()); } + + + + + + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + + + + + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(this->begin()); } + + + public: + + + + size_type + size() const noexcept + { return _M_string_length; } + + + + size_type + length() const noexcept + { return _M_string_length; } + + + size_type + max_size() const noexcept + { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } +# 739 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + void + resize(size_type __n, _CharT __c); +# 752 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + void + resize(size_type __n) + { this->resize(__n, _CharT()); } + + + + void + shrink_to_fit() noexcept + { + + if (capacity() > size()) + { + try + { reserve(0); } + catch(...) + { } + } + + } + + + + + + + size_type + capacity() const noexcept + { + return _M_is_local() ? size_type(_S_local_capacity) + : _M_allocated_capacity; + } +# 801 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + void + reserve(size_type __res_arg = 0); + + + + + void + clear() noexcept + { _M_set_length(0); } + + + + + + bool + empty() const noexcept + { return this->size() == 0; } +# 830 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + const_reference + operator[] (size_type __pos) const noexcept + { + ; + return _M_data()[__pos]; + } +# 847 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + reference + operator[](size_type __pos) + { + + + ; + + ; + return _M_data()[__pos]; + } +# 868 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + const_reference + at(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") + + , + __n, this->size()); + return _M_data()[__n]; + } +# 889 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + reference + at(size_type __n) + { + if (__n >= size()) + __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") + + , + __n, this->size()); + return _M_data()[__n]; + } + + + + + + + reference + front() noexcept + { return operator[](0); } + + + + + + const_reference + front() const noexcept + { return operator[](0); } + + + + + + reference + back() noexcept + { return operator[](this->size() - 1); } + + + + + + const_reference + back() const noexcept + { return operator[](this->size() - 1); } +# 940 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + operator+=(const basic_string& __str) + { return this->append(__str); } + + + + + + + basic_string& + operator+=(const _CharT* __s) + { return this->append(__s); } + + + + + + + basic_string& + operator+=(_CharT __c) + { + this->push_back(__c); + return *this; + } + + + + + + + + basic_string& + operator+=(initializer_list<_CharT> __l) + { return this->append(__l.begin(), __l.size()); } + + + + + + + + basic_string& + append(const basic_string& __str) + { return _M_append(__str._M_data(), __str.size()); } +# 998 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n) + { return _M_append(__str._M_data() + + __str._M_check(__pos, "basic_string::append"), + __str._M_limit(__pos, __n)); } + + + + + + + + basic_string& + append(const _CharT* __s, size_type __n) + { + ; + _M_check_length(size_type(0), __n, "basic_string::append"); + return _M_append(__s, __n); + } + + + + + + + basic_string& + append(const _CharT* __s) + { + ; + const size_type __n = traits_type::length(__s); + _M_check_length(size_type(0), __n, "basic_string::append"); + return _M_append(__s, __n); + } +# 1040 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + append(size_type __n, _CharT __c) + { return _M_replace_aux(this->size(), size_type(0), __n, __c); } + + + + + + + + basic_string& + append(initializer_list<_CharT> __l) + { return this->append(__l.begin(), __l.size()); } +# 1064 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<class _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + + + + basic_string& + append(_InputIterator __first, _InputIterator __last) + { return this->replace(end(), end(), __first, __last); } + + + + + + void + push_back(_CharT __c) + { + const size_type __size = this->size(); + if (__size + 1 > this->capacity()) + this->_M_mutate(__size, size_type(0), 0, size_type(1)); + traits_type::assign(this->_M_data()[__size], __c); + this->_M_set_length(__size + 1); + } + + + + + + + basic_string& + assign(const basic_string& __str) + { + this->_M_assign(__str); + return *this; + } +# 1108 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + assign(basic_string&& __str) + { + + + return *this = std::move(__str); + } +# 1130 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + assign(const basic_string& __str, size_type __pos, size_type __n) + { return _M_replace(size_type(0), this->size(), __str._M_data() + + __str._M_check(__pos, "basic_string::assign"), + __str._M_limit(__pos, __n)); } +# 1146 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + assign(const _CharT* __s, size_type __n) + { + ; + return _M_replace(size_type(0), this->size(), __s, __n); + } +# 1162 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + assign(const _CharT* __s) + { + ; + return _M_replace(size_type(0), this->size(), __s, + traits_type::length(__s)); + } +# 1179 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + assign(size_type __n, _CharT __c) + { return _M_replace_aux(size_type(0), this->size(), __n, __c); } +# 1192 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<class _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + + + + basic_string& + assign(_InputIterator __first, _InputIterator __last) + { return this->replace(begin(), end(), __first, __last); } + + + + + + + + basic_string& + assign(initializer_list<_CharT> __l) + { return this->assign(__l.begin(), __l.size()); } +# 1228 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + iterator + insert(const_iterator __p, size_type __n, _CharT __c) + { + ; + const size_type __pos = __p - begin(); + this->replace(__p, __p, __n, __c); + return iterator(this->_M_data() + __pos); + } +# 1270 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<class _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + iterator + insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) + { + ; + const size_type __pos = __p - begin(); + this->replace(__p, __p, __beg, __end); + return iterator(this->_M_data() + __pos); + } +# 1306 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + void + insert(iterator __p, initializer_list<_CharT> __l) + { + ; + this->insert(__p - begin(), __l.begin(), __l.size()); + } +# 1326 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + insert(size_type __pos1, const basic_string& __str) + { return this->replace(__pos1, size_type(0), + __str._M_data(), __str.size()); } +# 1349 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + insert(size_type __pos1, const basic_string& __str, + size_type __pos2, size_type __n) + { return this->replace(__pos1, size_type(0), __str._M_data() + + __str._M_check(__pos2, "basic_string::insert"), + __str._M_limit(__pos2, __n)); } +# 1372 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n) + { return this->replace(__pos, size_type(0), __s, __n); } +# 1391 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + insert(size_type __pos, const _CharT* __s) + { + ; + return this->replace(__pos, size_type(0), __s, + traits_type::length(__s)); + } +# 1415 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + insert(size_type __pos, size_type __n, _CharT __c) + { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), + size_type(0), __n, __c); } +# 1433 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + iterator + insert(__const_iterator __p, _CharT __c) + { + ; + const size_type __pos = __p - begin(); + _M_replace_aux(__pos, size_type(0), size_type(1), __c); + return iterator(_M_data() + __pos); + } +# 1457 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + erase(size_type __pos = 0, size_type __n = npos) + { + this->_M_erase(_M_check(__pos, "basic_string::erase"), + _M_limit(__pos, __n)); + return *this; + } +# 1473 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + iterator + erase(__const_iterator __position) + { + + ; + const size_type __pos = __position - begin(); + this->_M_erase(__pos, size_type(1)); + return iterator(_M_data() + __pos); + } +# 1492 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + iterator + erase(__const_iterator __first, __const_iterator __last) + { + + ; + const size_type __pos = __first - begin(); + this->_M_erase(__pos, __last - __first); + return iterator(this->_M_data() + __pos); + } + + + + + + + + void + pop_back() noexcept + { _M_erase(size()-1, 1); } +# 1530 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(size_type __pos, size_type __n, const basic_string& __str) + { return this->replace(__pos, __n, __str._M_data(), __str.size()); } +# 1552 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) + { return this->replace(__pos1, __n1, __str._M_data() + + __str._M_check(__pos2, "basic_string::replace"), + __str._M_limit(__pos2, __n2)); } +# 1577 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) + { + ; + return _M_replace(_M_check(__pos, "basic_string::replace"), + _M_limit(__pos, __n1), __s, __n2); + } +# 1602 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s) + { + ; + return this->replace(__pos, __n1, __s, traits_type::length(__s)); + } +# 1626 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) + { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), + _M_limit(__pos, __n1), __n2, __c); } +# 1644 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + const basic_string& __str) + { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } +# 1664 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + const _CharT* __s, size_type __n) + { + + ; + return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); + } +# 1686 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) + { + ; + return this->replace(__i1, __i2, __s, traits_type::length(__s)); + } +# 1707 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, size_type __n, + _CharT __c) + { + + ; + return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); + } +# 1732 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<class _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + basic_string& + replace(const_iterator __i1, const_iterator __i2, + _InputIterator __k1, _InputIterator __k2) + { + + ; + ; + return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, + std::__false_type()); + } +# 1764 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + _CharT* __k1, _CharT* __k2) + { + + ; + ; + return this->replace(__i1 - begin(), __i2 - __i1, + __k1, __k2 - __k1); + } + + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + const _CharT* __k1, const _CharT* __k2) + { + + ; + ; + return this->replace(__i1 - begin(), __i2 - __i1, + __k1, __k2 - __k1); + } + + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + iterator __k1, iterator __k2) + { + + ; + ; + return this->replace(__i1 - begin(), __i2 - __i1, + __k1.base(), __k2 - __k1); + } + + basic_string& + replace(__const_iterator __i1, __const_iterator __i2, + const_iterator __k1, const_iterator __k2) + { + + ; + ; + return this->replace(__i1 - begin(), __i2 - __i1, + __k1.base(), __k2 - __k1); + } +# 1823 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string& replace(const_iterator __i1, const_iterator __i2, + initializer_list<_CharT> __l) + { return this->replace(__i1, __i2, __l.begin(), __l.end()); } + + + private: + template<class _Integer> + basic_string& + _M_replace_dispatch(const_iterator __i1, const_iterator __i2, + _Integer __n, _Integer __val, __true_type) + { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } + + template<class _InputIterator> + basic_string& + _M_replace_dispatch(const_iterator __i1, const_iterator __i2, + _InputIterator __k1, _InputIterator __k2, + __false_type); + + basic_string& + _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, + _CharT __c); + + basic_string& + _M_replace(size_type __pos, size_type __len1, const _CharT* __s, + const size_type __len2); + + basic_string& + _M_append(const _CharT* __s, size_type __n); + + public: +# 1866 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const; +# 1876 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + void + swap(basic_string& __s) noexcept; +# 1886 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + const _CharT* + c_str() const noexcept + { return _M_data(); } + + + + + + + + const _CharT* + data() const noexcept + { return _M_data(); } + + + + + allocator_type + get_allocator() const noexcept + { return _M_get_allocator(); } +# 1919 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const; +# 1932 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find(const basic_string& __str, size_type __pos = 0) const + noexcept + { return this->find(__str.data(), __pos, __str.size()); } +# 1947 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find(const _CharT* __s, size_type __pos = 0) const + { + ; + return this->find(__s, __pos, traits_type::length(__s)); + } +# 1964 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find(_CharT __c, size_type __pos = 0) const noexcept; +# 1977 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + rfind(const basic_string& __str, size_type __pos = npos) const + noexcept + { return this->rfind(__str.data(), __pos, __str.size()); } +# 1994 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const; +# 2007 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + rfind(const _CharT* __s, size_type __pos = npos) const + { + ; + return this->rfind(__s, __pos, traits_type::length(__s)); + } +# 2024 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + rfind(_CharT __c, size_type __pos = npos) const noexcept; +# 2038 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const + noexcept + { return this->find_first_of(__str.data(), __pos, __str.size()); } +# 2055 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; +# 2068 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_of(const _CharT* __s, size_type __pos = 0) const + { + ; + return this->find_first_of(__s, __pos, traits_type::length(__s)); + } +# 2087 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_of(_CharT __c, size_type __pos = 0) const noexcept + { return this->find(__c, __pos); } +# 2102 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_of(const basic_string& __str, size_type __pos = npos) const + noexcept + { return this->find_last_of(__str.data(), __pos, __str.size()); } +# 2119 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; +# 2132 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_of(const _CharT* __s, size_type __pos = npos) const + { + ; + return this->find_last_of(__s, __pos, traits_type::length(__s)); + } +# 2151 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_of(_CharT __c, size_type __pos = npos) const noexcept + { return this->rfind(__c, __pos); } +# 2165 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const + noexcept + { return this->find_first_not_of(__str.data(), __pos, __str.size()); } +# 2182 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; +# 2196 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_not_of(const _CharT* __s, size_type __pos = 0) const + { + ; + return this->find_first_not_of(__s, __pos, traits_type::length(__s)); + } +# 2213 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const + noexcept; +# 2228 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_not_of(const basic_string& __str, size_type __pos = npos) const + noexcept + { return this->find_last_not_of(__str.data(), __pos, __str.size()); } +# 2245 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; +# 2259 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_not_of(const _CharT* __s, size_type __pos = npos) const + { + ; + return this->find_last_not_of(__s, __pos, traits_type::length(__s)); + } +# 2276 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const + noexcept; +# 2292 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + basic_string + substr(size_type __pos = 0, size_type __n = npos) const + { return basic_string(*this, + _M_check(__pos, "basic_string::substr"), __n); } +# 2311 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(const basic_string& __str) const + { + const size_type __size = this->size(); + const size_type __osize = __str.size(); + const size_type __len = std::min(__size, __osize); + + int __r = traits_type::compare(_M_data(), __str.data(), __len); + if (!__r) + __r = _S_compare(__size, __osize); + return __r; + } +# 2343 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(size_type __pos, size_type __n, const basic_string& __str) const; +# 2369 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const; +# 2387 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(const _CharT* __s) const; +# 2411 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(size_type __pos, size_type __n1, const _CharT* __s) const; +# 2438 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + int + compare(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) const; + }; +} +# 4781 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc> + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { + basic_string<_CharT, _Traits, _Alloc> __str(__lhs); + __str.append(__rhs); + return __str; + } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT,_Traits,_Alloc> + operator+(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT,_Traits,_Alloc> + operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { + basic_string<_CharT, _Traits, _Alloc> __str(__lhs); + __str.append(__rhs); + return __str; + } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) + { + typedef basic_string<_CharT, _Traits, _Alloc> __string_type; + typedef typename __string_type::size_type __size_type; + __string_type __str(__lhs); + __str.append(__size_type(1), __rhs); + return __str; + } + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return std::move(__lhs.append(__rhs)); } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + basic_string<_CharT, _Traits, _Alloc>&& __rhs) + { return std::move(__rhs.insert(0, __lhs)); } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + basic_string<_CharT, _Traits, _Alloc>&& __rhs) + { + const auto __size = __lhs.size() + __rhs.size(); + const bool __cond = (__size > __lhs.capacity() + && __size <= __rhs.capacity()); + return __cond ? std::move(__rhs.insert(0, __lhs)) + : std::move(__lhs.append(__rhs)); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(const _CharT* __lhs, + basic_string<_CharT, _Traits, _Alloc>&& __rhs) + { return std::move(__rhs.insert(0, __lhs)); } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(_CharT __lhs, + basic_string<_CharT, _Traits, _Alloc>&& __rhs) + { return std::move(__rhs.insert(0, 1, __lhs)); } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + const _CharT* __rhs) + { return std::move(__lhs.append(__rhs)); } + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_string<_CharT, _Traits, _Alloc> + operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + _CharT __rhs) + { return std::move(__lhs.append(1, __rhs)); } +# 4902 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) == 0; } + + template<typename _CharT> + inline + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type + operator==(const basic_string<_CharT>& __lhs, + const basic_string<_CharT>& __rhs) + { return (__lhs.size() == __rhs.size() + && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), + __lhs.size())); } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator==(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) == 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) == 0; } +# 4948 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator!=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return !(__lhs == __rhs); } +# 4985 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) < 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) < 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) > 0; } +# 5022 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) > 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) > 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) < 0; } +# 5059 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) <= 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) <= 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator<=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) >= 0; } +# 5096 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) >= 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) >= 0; } + + + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline bool + operator>=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) <= 0; } +# 5133 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline void + swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, + basic_string<_CharT, _Traits, _Alloc>& __rhs) + { __lhs.swap(__rhs); } +# 5152 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, + basic_string<_CharT, _Traits, _Alloc>& __str); + + template<> + basic_istream<char>& + operator>>(basic_istream<char>& __is, basic_string<char>& __str); +# 5170 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, + const basic_string<_CharT, _Traits, _Alloc>& __str) + { + + + return __ostream_insert(__os, __str.data(), __str.size()); + } +# 5193 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>& __is, + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); +# 5210 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>& __is, + basic_string<_CharT, _Traits, _Alloc>& __str) + { return std::getline(__is, __str, __is.widen('\n')); } + + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>&& __is, + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) + { return std::getline(__is, __str, __delim); } + + + template<typename _CharT, typename _Traits, typename _Alloc> + inline basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>&& __is, + basic_string<_CharT, _Traits, _Alloc>& __str) + { return std::getline(__is, __str); } + + + template<> + basic_istream<char>& + getline(basic_istream<char>& __in, basic_string<char>& __str, + char __delim); + + + template<> + basic_istream<wchar_t>& + getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str, + wchar_t __delim); + + + +} + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdlib" 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 3 + + + + +# 1 "/mnt/odroid-c2/usr/include/wchar.h" 1 3 4 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwchar" 2 3 +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 3 + + +# 1 "/mnt/odroid-c2/usr/include/stdio.h" 1 3 4 +# 29 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern "C" { + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 34 "/mnt/odroid-c2/usr/include/stdio.h" 2 3 4 +# 74 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/libio.h" 1 3 4 +# 31 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/_G_config.h" 1 3 4 +# 15 "/mnt/odroid-c2/usr/include/_G_config.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 16 "/mnt/odroid-c2/usr/include/_G_config.h" 2 3 4 + + + + +# 1 "/mnt/odroid-c2/usr/include/wchar.h" 1 3 4 +# 21 "/mnt/odroid-c2/usr/include/_G_config.h" 2 3 4 +typedef struct +{ + __off_t __pos; + __mbstate_t __state; +} _G_fpos_t; +typedef struct +{ + __off64_t __pos; + __mbstate_t __state; +} _G_fpos64_t; +# 32 "/mnt/odroid-c2/usr/include/libio.h" 2 3 4 +# 49 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdarg.h" 1 3 4 +# 50 "/mnt/odroid-c2/usr/include/libio.h" 2 3 4 +# 144 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +struct _IO_jump_t; struct _IO_FILE; + + + + + +typedef void _IO_lock_t; + + + + + +struct _IO_marker { + struct _IO_marker *_next; + struct _IO_FILE *_sbuf; + + + + int _pos; +# 173 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +}; + + +enum __codecvt_result +{ + __codecvt_ok, + __codecvt_partial, + __codecvt_error, + __codecvt_noconv +}; +# 241 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +struct _IO_FILE { + int _flags; + + + + + char* _IO_read_ptr; + char* _IO_read_end; + char* _IO_read_base; + char* _IO_write_base; + char* _IO_write_ptr; + char* _IO_write_end; + char* _IO_buf_base; + char* _IO_buf_end; + + char *_IO_save_base; + char *_IO_backup_base; + char *_IO_save_end; + + struct _IO_marker *_markers; + + struct _IO_FILE *_chain; + + int _fileno; + + + + int _flags2; + + __off_t _old_offset; + + + + unsigned short _cur_column; + signed char _vtable_offset; + char _shortbuf[1]; + + + + _IO_lock_t *_lock; +# 289 "/mnt/odroid-c2/usr/include/libio.h" 3 4 + __off64_t _offset; + + + + + + + + void *__pad1; + void *__pad2; + void *__pad3; + void *__pad4; + + size_t __pad5; + int _mode; + + char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; + +}; + + + + + +struct _IO_FILE_plus; + +extern struct _IO_FILE_plus _IO_2_1_stdin_; +extern struct _IO_FILE_plus _IO_2_1_stdout_; +extern struct _IO_FILE_plus _IO_2_1_stderr_; +# 333 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); + + + + + + + +typedef __ssize_t __io_write_fn (void *__cookie, const char *__buf, + size_t __n); + + + + + + + +typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); + + +typedef int __io_close_fn (void *__cookie); + + + + +typedef __io_read_fn cookie_read_function_t; +typedef __io_write_fn cookie_write_function_t; +typedef __io_seek_fn cookie_seek_function_t; +typedef __io_close_fn cookie_close_function_t; + + +typedef struct +{ + __io_read_fn *read; + __io_write_fn *write; + __io_seek_fn *seek; + __io_close_fn *close; +} _IO_cookie_io_functions_t; +typedef _IO_cookie_io_functions_t cookie_io_functions_t; + +struct _IO_cookie_file; + + +extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, + void *__cookie, _IO_cookie_io_functions_t __fns); + + + + +extern "C" { + + +extern int __underflow (_IO_FILE *); +extern int __uflow (_IO_FILE *); +extern int __overflow (_IO_FILE *, int); +# 429 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +extern int _IO_getc (_IO_FILE *__fp); +extern int _IO_putc (int __c, _IO_FILE *__fp); +extern int _IO_feof (_IO_FILE *__fp) throw (); +extern int _IO_ferror (_IO_FILE *__fp) throw (); + +extern int _IO_peekc_locked (_IO_FILE *__fp); + + + + + +extern void _IO_flockfile (_IO_FILE *) throw (); +extern void _IO_funlockfile (_IO_FILE *) throw (); +extern int _IO_ftrylockfile (_IO_FILE *) throw (); +# 459 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, + __gnuc_va_list, int *__restrict); +extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, + __gnuc_va_list); +extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t); +extern size_t _IO_sgetn (_IO_FILE *, void *, size_t); + +extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int); +extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int); + +extern void _IO_free_backup_area (_IO_FILE *) throw (); +# 521 "/mnt/odroid-c2/usr/include/libio.h" 3 4 +} +# 75 "/mnt/odroid-c2/usr/include/stdio.h" 2 3 4 + + + + +typedef __gnuc_va_list va_list; +# 108 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + +typedef _G_fpos_t fpos_t; + + + + + +typedef _G_fpos64_t fpos64_t; +# 164 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4 +# 165 "/mnt/odroid-c2/usr/include/stdio.h" 2 3 4 + + + +extern struct _IO_FILE *stdin; +extern struct _IO_FILE *stdout; +extern struct _IO_FILE *stderr; + + + + + + + +extern int remove (const char *__filename) throw (); + +extern int rename (const char *__old, const char *__new) throw (); + + + + +extern int renameat (int __oldfd, const char *__old, int __newfd, + const char *__new) throw (); + + + + + + + + +extern FILE *tmpfile (void) ; +# 205 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern FILE *tmpfile64 (void) ; + + + +extern char *tmpnam (char *__s) throw () ; + + + + + +extern char *tmpnam_r (char *__s) throw () ; +# 227 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern char *tempnam (const char *__dir, const char *__pfx) + throw () __attribute__ ((__malloc__)) ; + + + + + + + + +extern int fclose (FILE *__stream); + + + + +extern int fflush (FILE *__stream); + +# 252 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fflush_unlocked (FILE *__stream); +# 262 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fcloseall (void); + + + + + + + + + +extern FILE *fopen (const char *__restrict __filename, + const char *__restrict __modes) ; + + + + +extern FILE *freopen (const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream) ; +# 295 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + +extern FILE *fopen64 (const char *__restrict __filename, + const char *__restrict __modes) ; +extern FILE *freopen64 (const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream) ; + + + + +extern FILE *fdopen (int __fd, const char *__modes) throw () ; + + + + + +extern FILE *fopencookie (void *__restrict __magic_cookie, + const char *__restrict __modes, + _IO_cookie_io_functions_t __io_funcs) throw () ; + + + + +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) + throw () ; + + + + +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ; + + + + + + +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); + + + +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) throw (); + + + + + +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) throw (); + + +extern void setlinebuf (FILE *__stream) throw (); + + + + + + + + +extern int fprintf (FILE *__restrict __stream, + const char *__restrict __format, ...); + + + + +extern int printf (const char *__restrict __format, ...); + +extern int sprintf (char *__restrict __s, + const char *__restrict __format, ...) throw (); + + + + + +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg); + + + + +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); + +extern int vsprintf (char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) throw (); + + + + + +extern int snprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, ...) + throw () __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__printf__, 3, 0))); + + + + + + +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, + __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__printf__, 2, 0))) ; +extern int __asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; +extern int asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; + + + + +extern int vdprintf (int __fd, const char *__restrict __fmt, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__printf__, 2, 0))); +extern int dprintf (int __fd, const char *__restrict __fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); + + + + + + + + +extern int fscanf (FILE *__restrict __stream, + const char *__restrict __format, ...) ; + + + + +extern int scanf (const char *__restrict __format, ...) ; + +extern int sscanf (const char *__restrict __s, + const char *__restrict __format, ...) throw (); +# 463 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + + + + + + + +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))) ; + + + + + +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 1, 0))) ; + + +extern int vsscanf (const char *__restrict __s, + const char *__restrict __format, __gnuc_va_list __arg) + throw () __attribute__ ((__format__ (__scanf__, 2, 0))); +# 522 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + + + + + + + + +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + + + + + +extern int getchar (void); + +# 550 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); +# 561 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fgetc_unlocked (FILE *__stream); + + + + + + + + + + + +extern int fputc (int __c, FILE *__stream); +extern int putc (int __c, FILE *__stream); + + + + + +extern int putchar (int __c); + +# 594 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fputc_unlocked (int __c, FILE *__stream); + + + + + + + +extern int putc_unlocked (int __c, FILE *__stream); +extern int putchar_unlocked (int __c); + + + + + + +extern int getw (FILE *__stream); + + +extern int putw (int __w, FILE *__stream); + + + + + + + + +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) + ; +# 640 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + +# 649 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream) ; +# 665 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern __ssize_t __getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) ; +extern __ssize_t getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) ; + + + + + + + +extern __ssize_t getline (char **__restrict __lineptr, + size_t *__restrict __n, + FILE *__restrict __stream) ; + + + + + + + + +extern int fputs (const char *__restrict __s, FILE *__restrict __stream); + + + + + +extern int puts (const char *__s); + + + + + + +extern int ungetc (int __c, FILE *__stream); + + + + + + +extern size_t fread (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) ; + + + + +extern size_t fwrite (const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __s); + +# 726 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fputs_unlocked (const char *__restrict __s, + FILE *__restrict __stream); +# 737 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) ; +extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); + + + + + + + + +extern int fseek (FILE *__stream, long int __off, int __whence); + + + + +extern long int ftell (FILE *__stream) ; + + + + +extern void rewind (FILE *__stream); + +# 773 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern int fseeko (FILE *__stream, __off_t __off, int __whence); + + + + +extern __off_t ftello (FILE *__stream) ; +# 792 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + + + + + +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); + + + + +extern int fsetpos (FILE *__stream, const fpos_t *__pos); +# 815 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 + + + +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64 (FILE *__stream) ; +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); + + + + +extern void clearerr (FILE *__stream) throw (); + +extern int feof (FILE *__stream) throw () ; + +extern int ferror (FILE *__stream) throw () ; + + + + +extern void clearerr_unlocked (FILE *__stream) throw (); +extern int feof_unlocked (FILE *__stream) throw () ; +extern int ferror_unlocked (FILE *__stream) throw () ; + + + + + + + + +extern void perror (const char *__s); + + + + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4 +# 26 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4 +extern int sys_nerr; +extern const char *const sys_errlist[]; + + +extern int _sys_nerr; +extern const char *const _sys_errlist[]; +# 854 "/mnt/odroid-c2/usr/include/stdio.h" 2 3 4 + + + + +extern int fileno (FILE *__stream) throw () ; + + + + +extern int fileno_unlocked (FILE *__stream) throw () ; +# 872 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +extern FILE *popen (const char *__command, const char *__modes) ; + + + + + +extern int pclose (FILE *__stream); + + + + + +extern char *ctermid (char *__s) throw (); + + + + + +extern char *cuserid (char *__s); + + + + +struct obstack; + + +extern int obstack_printf (struct obstack *__restrict __obstack, + const char *__restrict __format, ...) + throw () __attribute__ ((__format__ (__printf__, 2, 3))); +extern int obstack_vprintf (struct obstack *__restrict __obstack, + const char *__restrict __format, + __gnuc_va_list __args) + throw () __attribute__ ((__format__ (__printf__, 2, 0))); + + + + + + + +extern void flockfile (FILE *__stream) throw (); + + + +extern int ftrylockfile (FILE *__stream) throw () ; + + +extern void funlockfile (FILE *__stream) throw (); +# 933 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdio.h" 1 3 4 +# 35 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdio.h" 3 4 +extern __inline __attribute__ ((__gnu_inline__)) int +vprintf (const char *__restrict __fmt, __gnuc_va_list __arg) +{ + return vfprintf (stdout, __fmt, __arg); +} + + + +extern __inline __attribute__ ((__gnu_inline__)) int +getchar (void) +{ + return _IO_getc (stdin); +} + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +fgetc_unlocked (FILE *__fp) +{ + return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +getc_unlocked (FILE *__fp) +{ + return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +getchar_unlocked (void) +{ + return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); +} + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +putchar (int __c) +{ + return _IO_putc (__c, stdout); +} + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +fputc_unlocked (int __c, FILE *__stream) +{ + return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +putc_unlocked (int __c, FILE *__stream) +{ + return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +putchar_unlocked (int __c) +{ + return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) __ssize_t +getline (char **__lineptr, size_t *__n, FILE *__stream) +{ + return __getdelim (__lineptr, __n, '\n', __stream); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () +{ + return (((__stream)->_flags & 0x10) != 0); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () +{ + return (((__stream)->_flags & 0x20) != 0); +} +# 934 "/mnt/odroid-c2/usr/include/stdio.h" 2 3 4 +# 942 "/mnt/odroid-c2/usr/include/stdio.h" 3 4 +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 2 3 +# 96 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 3 +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; + + + + + 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; + + using ::tmpnam; + + using ::ungetc; + using ::vfprintf; + using ::vprintf; + using ::vsprintf; +} +# 157 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 3 +namespace __gnu_cxx +{ +# 175 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cstdio" 3 + using ::snprintf; + using ::vfscanf; + using ::vscanf; + using ::vsnprintf; + using ::vsscanf; + +} + +namespace std +{ + using ::__gnu_cxx::snprintf; + using ::__gnu_cxx::vfscanf; + using ::__gnu_cxx::vscanf; + using ::__gnu_cxx::vsnprintf; + using ::__gnu_cxx::vsscanf; +} +# 44 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 3 + +# 1 "/mnt/odroid-c2/usr/include/errno.h" 1 3 4 +# 31 "/mnt/odroid-c2/usr/include/errno.h" 3 4 +extern "C" { + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/errno.h" 1 3 4 +# 24 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/linux/errno.h" 1 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/asm/errno.h" 1 3 4 +# 1 "/mnt/odroid-c2/usr/include/asm-generic/errno.h" 1 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/asm-generic/errno-base.h" 1 3 4 +# 5 "/mnt/odroid-c2/usr/include/asm-generic/errno.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/asm/errno.h" 2 3 4 +# 1 "/mnt/odroid-c2/usr/include/linux/errno.h" 2 3 4 +# 25 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/errno.h" 2 3 4 +# 50 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4 +extern int *__errno_location (void) throw () __attribute__ ((__const__)); +# 36 "/mnt/odroid-c2/usr/include/errno.h" 2 3 4 +# 54 "/mnt/odroid-c2/usr/include/errno.h" 3 4 +extern char *program_invocation_name, *program_invocation_short_name; + + + +} +# 68 "/mnt/odroid-c2/usr/include/errno.h" 3 4 +typedef int error_t; +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 2 3 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/string_conversions.h" 2 3 + +namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +{ + + + + template<typename _TRet, typename _Ret = _TRet, typename _CharT, + typename... _Base> + _Ret + __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), + const char* __name, const _CharT* __str, std::size_t* __idx, + _Base... __base) + { + _Ret __ret; + + _CharT* __endptr; + (*__errno_location ()) = 0; + const _TRet __tmp = __convf(__str, &__endptr, __base...); + + if (__endptr == __str) + std::__throw_invalid_argument(__name); + else if ((*__errno_location ()) == 34 + || (std::__are_same<_Ret, int>::__value + && (__tmp < __numeric_traits<int>::__min + || __tmp > __numeric_traits<int>::__max))) + std::__throw_out_of_range(__name); + else + __ret = __tmp; + + if (__idx) + *__idx = __endptr - __str; + + return __ret; + } + + + template<typename _String, typename _CharT = typename _String::value_type> + _String + __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, + __builtin_va_list), std::size_t __n, + const _CharT* __fmt, ...) + { + + + _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __n)); + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + + const int __len = __convf(__s, __n, __fmt, __args); + + __builtin_va_end(__args); + + return _String(__s, __s + __len); + } + + +} +# 5250 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +namespace __cxx11 { + + + inline int + stoi(const string& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(), + __idx, __base); } + + inline long + stol(const string& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), + __idx, __base); } + + inline unsigned long + stoul(const string& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), + __idx, __base); } + + inline long long + stoll(const string& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), + __idx, __base); } + + inline unsigned long long + stoull(const string& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), + __idx, __base); } + + + inline float + stof(const string& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } + + inline double + stod(const string& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } + + inline long double + stold(const string& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } + + + + + inline string + to_string(int __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(int), + "%d", __val); } + + inline string + to_string(unsigned __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, + 4 * sizeof(unsigned), + "%u", __val); } + + inline string + to_string(long __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(long), + "%ld", __val); } + + inline string + to_string(unsigned long __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, + 4 * sizeof(unsigned long), + "%lu", __val); } + + inline string + to_string(long long __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, + 4 * sizeof(long long), + "%lld", __val); } + + inline string + to_string(unsigned long long __val) + { return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, + 4 * sizeof(unsigned long long), + "%llu", __val); } + + inline string + to_string(float __val) + { + const int __n = + __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n, + "%f", __val); + } + + inline string + to_string(double __val) + { + const int __n = + __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n, + "%f", __val); + } + + inline string + to_string(long double __val) + { + const int __n = + __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n, + "%Lf", __val); + } + + + inline int + stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(), + __idx, __base); } + + inline long + stol(const wstring& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), + __idx, __base); } + + inline unsigned long + stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), + __idx, __base); } + + inline long long + stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), + __idx, __base); } + + inline unsigned long long + stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) + { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), + __idx, __base); } + + + inline float + stof(const wstring& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } + + inline double + stod(const wstring& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } + + inline long double + stold(const wstring& __str, size_t* __idx = 0) + { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } + + + + inline wstring + to_wstring(int __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(int), + L"%d", __val); } + + inline wstring + to_wstring(unsigned __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, + 4 * sizeof(unsigned), + L"%u", __val); } + + inline wstring + to_wstring(long __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(long), + L"%ld", __val); } + + inline wstring + to_wstring(unsigned long __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, + 4 * sizeof(unsigned long), + L"%lu", __val); } + + inline wstring + to_wstring(long long __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, + 4 * sizeof(long long), + L"%lld", __val); } + + inline wstring + to_wstring(unsigned long long __val) + { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, + 4 * sizeof(unsigned long long), + L"%llu", __val); } + + inline wstring + to_wstring(float __val) + { + const int __n = + __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n, + L"%f", __val); + } + + inline wstring + to_wstring(double __val) + { + const int __n = + __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n, + L"%f", __val); + } + + inline wstring + to_wstring(long double __val) + { + const int __n = + __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20; + return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n, + L"%Lf", __val); + } + + + +} + +} + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/hash_bytes.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/hash_bytes.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/hash_bytes.h" 3 + + + +namespace std +{ + + + + + + + + size_t + _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); + + + + + + size_t + _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); + + +} +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 49 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 3 + template<typename _Result, typename _Arg> + struct __hash_base + { + typedef _Result result_type; + typedef _Arg argument_type; + }; + + + template<typename _Tp> + struct hash; + + + template<typename _Tp> + struct hash<_Tp*> : public __hash_base<size_t, _Tp*> + { + size_t + operator()(_Tp* __p) const noexcept + { return reinterpret_cast<size_t>(__p); } + }; +# 80 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/functional_hash.h" 3 + template<> struct hash<bool> : public __hash_base<size_t, bool> { size_t operator()(bool __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<char> : public __hash_base<size_t, char> { size_t operator()(char __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<signed char> : public __hash_base<size_t, signed char> { size_t operator()(signed char __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<unsigned char> : public __hash_base<size_t, unsigned char> { size_t operator()(unsigned char __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<wchar_t> : public __hash_base<size_t, wchar_t> { size_t operator()(wchar_t __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<char16_t> : public __hash_base<size_t, char16_t> { size_t operator()(char16_t __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<char32_t> : public __hash_base<size_t, char32_t> { size_t operator()(char32_t __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<short> : public __hash_base<size_t, short> { size_t operator()(short __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<int> : public __hash_base<size_t, int> { size_t operator()(int __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<long> : public __hash_base<size_t, long> { size_t operator()(long __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<long long> : public __hash_base<size_t, long long> { size_t operator()(long long __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<unsigned short> : public __hash_base<size_t, unsigned short> { size_t operator()(unsigned short __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<unsigned int> : public __hash_base<size_t, unsigned int> { size_t operator()(unsigned int __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<unsigned long> : public __hash_base<size_t, unsigned long> { size_t operator()(unsigned long __val) const noexcept { return static_cast<size_t>(__val); } }; + + + template<> struct hash<unsigned long long> : public __hash_base<size_t, unsigned long long> { size_t operator()(unsigned long long __val) const noexcept { return static_cast<size_t>(__val); } }; + + + + struct _Hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast<size_t>(0xc70f6907UL)) + { return _Hash_bytes(__ptr, __clength, __seed); } + + template<typename _Tp> + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template<typename _Tp> + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + struct _Fnv_hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast<size_t>(2166136261UL)) + { return _Fnv_hash_bytes(__ptr, __clength, __seed); } + + template<typename _Tp> + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template<typename _Tp> + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + + template<> + struct hash<float> : public __hash_base<size_t, float> + { + size_t + operator()(float __val) const noexcept + { + + return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; + } + }; + + + template<> + struct hash<double> : public __hash_base<size_t, double> + { + size_t + operator()(double __val) const noexcept + { + + return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; + } + }; + + + template<> + struct hash<long double> + : public __hash_base<size_t, long double> + { + __attribute__ ((__pure__)) size_t + operator()(long double __val) const noexcept; + }; + + + + + + + + template<typename _Hash> + struct __is_fast_hash : public std::true_type + { }; + + template<> + struct __is_fast_hash<hash<long double>> : public std::false_type + { }; + + +} +# 5472 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + template<> + struct hash<string> + : public __hash_base<size_t, string> + { + size_t + operator()(const string& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), __s.length()); } + }; + + template<> + struct __is_fast_hash<hash<string>> : std::false_type + { }; + + + + template<> + struct hash<wstring> + : public __hash_base<size_t, wstring> + { + size_t + operator()(const wstring& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(wchar_t)); } + }; + + template<> + struct __is_fast_hash<hash<wstring>> : std::false_type + { }; + + + + + + template<> + struct hash<u16string> + : public __hash_base<size_t, u16string> + { + size_t + operator()(const u16string& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char16_t)); } + }; + + template<> + struct __is_fast_hash<hash<u16string>> : std::false_type + { }; + + + template<> + struct hash<u32string> + : public __hash_base<size_t, u32string> + { + size_t + operator()(const u32string& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char32_t)); } + }; + + template<> + struct __is_fast_hash<hash<u32string>> : std::false_type + { }; + + + + + + + inline namespace literals + { + inline namespace string_literals + { + + __attribute ((__abi_tag__ ("cxx11"))) + inline basic_string<char> + operator""s(const char* __str, size_t __len) + { return basic_string<char>{__str, __len}; } + + + __attribute ((__abi_tag__ ("cxx11"))) + inline basic_string<wchar_t> + operator""s(const wchar_t* __str, size_t __len) + { return basic_string<wchar_t>{__str, __len}; } + + + + __attribute ((__abi_tag__ ("cxx11"))) + inline basic_string<char16_t> + operator""s(const char16_t* __str, size_t __len) + { return basic_string<char16_t>{__str, __len}; } + + __attribute ((__abi_tag__ ("cxx11"))) + inline basic_string<char32_t> + operator""s(const char32_t* __str, size_t __len) + { return basic_string<char32_t>{__str, __len}; } + + + } + } + + + + +} +# 53 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.tcc" 1 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.tcc" 3 + +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.tcc" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + const typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>::npos; + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + swap(basic_string& __s) noexcept + { + if (this == &__s) + return; + + + + + std::__alloc_swap<allocator_type>::_S_do_it(_M_get_allocator(), + __s._M_get_allocator()); + + if (_M_is_local()) + if (__s._M_is_local()) + { + if (length() && __s.length()) + { + _CharT __tmp_data[_S_local_capacity + 1]; + traits_type::copy(__tmp_data, __s._M_local_buf, + _S_local_capacity + 1); + traits_type::copy(__s._M_local_buf, _M_local_buf, + _S_local_capacity + 1); + traits_type::copy(_M_local_buf, __tmp_data, + _S_local_capacity + 1); + } + else if (__s.length()) + { + traits_type::copy(_M_local_buf, __s._M_local_buf, + _S_local_capacity + 1); + _M_length(__s.length()); + __s._M_set_length(0); + return; + } + else if (length()) + { + traits_type::copy(__s._M_local_buf, _M_local_buf, + _S_local_capacity + 1); + __s._M_length(length()); + _M_set_length(0); + return; + } + } + else + { + const size_type __tmp_capacity = __s._M_allocated_capacity; + traits_type::copy(__s._M_local_buf, _M_local_buf, + _S_local_capacity + 1); + _M_data(__s._M_data()); + __s._M_data(__s._M_local_buf); + _M_capacity(__tmp_capacity); + } + else + { + const size_type __tmp_capacity = _M_allocated_capacity; + if (__s._M_is_local()) + { + traits_type::copy(_M_local_buf, __s._M_local_buf, + _S_local_capacity + 1); + __s._M_data(_M_data()); + _M_data(_M_local_buf); + } + else + { + pointer __tmp_ptr = _M_data(); + _M_data(__s._M_data()); + __s._M_data(__tmp_ptr); + _M_capacity(__s._M_allocated_capacity); + } + __s._M_capacity(__tmp_capacity); + } + + const size_type __tmp_length = length(); + _M_length(__s.length()); + __s._M_length(__tmp_length); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::pointer + basic_string<_CharT, _Traits, _Alloc>:: + _M_create(size_type& __capacity, size_type __old_capacity) + { + + + if (__capacity > max_size()) + std::__throw_length_error(("basic_string::_M_create")); + + + + + if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) + { + __capacity = 2 * __old_capacity; + + if (__capacity > max_size()) + __capacity = max_size(); + } + + + + return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1); + } + + + + + + template<typename _CharT, typename _Traits, typename _Alloc> + template<typename _InIterator> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_construct(_InIterator __beg, _InIterator __end, + std::input_iterator_tag) + { + size_type __len = 0; + size_type __capacity = size_type(_S_local_capacity); + + while (__beg != __end && __len < __capacity) + { + _M_data()[__len++] = *__beg; + ++__beg; + } + + try + { + while (__beg != __end) + { + if (__len == __capacity) + { + + __capacity = __len + 1; + pointer __another = _M_create(__capacity, __len); + this->_S_copy(__another, _M_data(), __len); + _M_dispose(); + _M_data(__another); + _M_capacity(__capacity); + } + _M_data()[__len++] = *__beg; + ++__beg; + } + } + catch(...) + { + _M_dispose(); + throw; + } + + _M_set_length(__len); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + template<typename _InIterator> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_construct(_InIterator __beg, _InIterator __end, + std::forward_iterator_tag) + { + + if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) + std::__throw_logic_error(("basic_string::" "_M_construct null not valid") + ); + + size_type __dnew = static_cast<size_type>(std::distance(__beg, __end)); + + if (__dnew > size_type(_S_local_capacity)) + { + _M_data(_M_create(__dnew, size_type(0))); + _M_capacity(__dnew); + } + + + try + { this->_S_copy_chars(_M_data(), __beg, __end); } + catch(...) + { + _M_dispose(); + throw; + } + + _M_set_length(__dnew); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_construct(size_type __n, _CharT __c) + { + if (__n > size_type(_S_local_capacity)) + { + _M_data(_M_create(__n, size_type(0))); + _M_capacity(__n); + } + + if (__n) + this->_S_assign(_M_data(), __n, __c); + + _M_set_length(__n); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_assign(const basic_string& __str) + { + if (this != &__str) + { + const size_type __rsize = __str.length(); + const size_type __capacity = capacity(); + + if (__rsize > __capacity) + { + size_type __new_capacity = __rsize; + pointer __tmp = _M_create(__new_capacity, __capacity); + _M_dispose(); + _M_data(__tmp); + _M_capacity(__new_capacity); + } + + if (__rsize) + this->_S_copy(_M_data(), __str._M_data(), __rsize); + + _M_set_length(__rsize); + } + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + reserve(size_type __res) + { + + if (__res < length()) + __res = length(); + + const size_type __capacity = capacity(); + if (__res != __capacity) + { + if (__res > __capacity + || __res > size_type(_S_local_capacity)) + { + pointer __tmp = _M_create(__res, __capacity); + this->_S_copy(__tmp, _M_data(), length() + 1); + _M_dispose(); + _M_data(__tmp); + _M_capacity(__res); + } + else if (!_M_is_local()) + { + this->_S_copy(_M_local_data(), _M_data(), length() + 1); + _M_destroy(__capacity); + _M_data(_M_local_data()); + } + } + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, + size_type __len2) + { + const size_type __how_much = length() - __pos - __len1; + + size_type __new_capacity = length() + __len2 - __len1; + pointer __r = _M_create(__new_capacity, capacity()); + + if (__pos) + this->_S_copy(__r, _M_data(), __pos); + if (__s && __len2) + this->_S_copy(__r + __pos, __s, __len2); + if (__how_much) + this->_S_copy(__r + __pos + __len2, + _M_data() + __pos + __len1, __how_much); + + _M_dispose(); + _M_data(__r); + _M_capacity(__new_capacity); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + _M_erase(size_type __pos, size_type __n) + { + const size_type __how_much = length() - __pos - __n; + + if (__how_much && __n) + this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); + + _M_set_length(length() - __n); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + void + basic_string<_CharT, _Traits, _Alloc>:: + resize(size_type __n, _CharT __c) + { + const size_type __size = this->size(); + if (__size < __n) + this->append(__n - __size, __c); + else if (__n < __size) + this->_M_erase(__n, __size - __n); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc>& + basic_string<_CharT, _Traits, _Alloc>:: + _M_append(const _CharT* __s, size_type __n) + { + const size_type __len = __n + this->size(); + + if (__len <= this->capacity()) + { + if (__n) + this->_S_copy(this->_M_data() + this->size(), __s, __n); + } + else + this->_M_mutate(this->size(), size_type(0), __s, __n); + + this->_M_set_length(__len); + return *this; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + template<typename _InputIterator> + basic_string<_CharT, _Traits, _Alloc>& + basic_string<_CharT, _Traits, _Alloc>:: + _M_replace_dispatch(const_iterator __i1, const_iterator __i2, + _InputIterator __k1, _InputIterator __k2, + std::__false_type) + { + const basic_string __s(__k1, __k2); + const size_type __n1 = __i2 - __i1; + return _M_replace(__i1 - begin(), __n1, __s._M_data(), + __s.size()); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc>& + basic_string<_CharT, _Traits, _Alloc>:: + _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, + _CharT __c) + { + _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); + + const size_type __old_size = this->size(); + const size_type __new_size = __old_size + __n2 - __n1; + + if (__new_size <= this->capacity()) + { + _CharT* __p = this->_M_data() + __pos1; + + const size_type __how_much = __old_size - __pos1 - __n1; + if (__how_much && __n1 != __n2) + this->_S_move(__p + __n2, __p + __n1, __how_much); + } + else + this->_M_mutate(__pos1, __n1, 0, __n2); + + if (__n2) + this->_S_assign(this->_M_data() + __pos1, __n2, __c); + + this->_M_set_length(__new_size); + return *this; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc>& + basic_string<_CharT, _Traits, _Alloc>:: + _M_replace(size_type __pos, size_type __len1, const _CharT* __s, + const size_type __len2) + { + _M_check_length(__len1, __len2, "basic_string::_M_replace"); + + const size_type __old_size = this->size(); + const size_type __new_size = __old_size + __len2 - __len1; + + if (__new_size <= this->capacity()) + { + _CharT* __p = this->_M_data() + __pos; + + const size_type __how_much = __old_size - __pos - __len1; + if (_M_disjunct(__s)) + { + if (__how_much && __len1 != __len2) + this->_S_move(__p + __len2, __p + __len1, __how_much); + if (__len2) + this->_S_copy(__p, __s, __len2); + } + else + { + + if (__len2 && __len2 <= __len1) + this->_S_move(__p, __s, __len2); + if (__how_much && __len1 != __len2) + this->_S_move(__p + __len2, __p + __len1, __how_much); + if (__len2 > __len1) + { + if (__s + __len2 <= __p + __len1) + this->_S_move(__p, __s, __len2); + else if (__s >= __p + __len1) + this->_S_copy(__p, __s + __len2 - __len1, __len2); + else + { + const size_type __nleft = (__p + __len1) - __s; + this->_S_move(__p, __s, __nleft); + this->_S_copy(__p + __nleft, __p + __len2, + __len2 - __nleft); + } + } + } + } + else + this->_M_mutate(__pos, __len1, __s, __len2); + + this->_M_set_length(__new_size); + return *this; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + copy(_CharT* __s, size_type __n, size_type __pos) const + { + _M_check(__pos, "basic_string::copy"); + __n = _M_limit(__pos, __n); + ; + if (__n) + _S_copy(__s, _M_data() + __pos, __n); + + return __n; + } +# 1149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_string.tcc" 3 + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc> + operator+(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { + ; + typedef basic_string<_CharT, _Traits, _Alloc> __string_type; + typedef typename __string_type::size_type __size_type; + const __size_type __len = _Traits::length(__lhs); + __string_type __str; + __str.reserve(__len + __rhs.size()); + __str.append(__lhs, __len); + __str.append(__rhs); + return __str; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_string<_CharT, _Traits, _Alloc> + operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { + typedef basic_string<_CharT, _Traits, _Alloc> __string_type; + typedef typename __string_type::size_type __size_type; + __string_type __str; + const __size_type __len = __rhs.size(); + __str.reserve(__len + 1); + __str.append(__size_type(1), __lhs); + __str.append(__rhs); + return __str; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + const size_type __size = this->size(); + const _CharT* __data = _M_data(); + + if (__n == 0) + return __pos <= __size ? __pos : npos; + + if (__n <= __size) + { + for (; __pos <= __size - __n; ++__pos) + if (traits_type::eq(__data[__pos], __s[0]) + && traits_type::compare(__data + __pos + 1, + __s + 1, __n - 1) == 0) + return __pos; + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find(_CharT __c, size_type __pos) const noexcept + { + size_type __ret = npos; + const size_type __size = this->size(); + if (__pos < __size) + { + const _CharT* __data = _M_data(); + const size_type __n = __size - __pos; + const _CharT* __p = traits_type::find(__data + __pos, __n, __c); + if (__p) + __ret = __p - __data; + } + return __ret; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + rfind(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + const size_type __size = this->size(); + if (__n <= __size) + { + __pos = std::min(size_type(__size - __n), __pos); + const _CharT* __data = _M_data(); + do + { + if (traits_type::compare(__data + __pos, __s, __n) == 0) + return __pos; + } + while (__pos-- > 0); + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + rfind(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->size(); + if (__size) + { + if (--__size > __pos) + __size = __pos; + for (++__size; __size-- > 0; ) + if (traits_type::eq(_M_data()[__size], __c)) + return __size; + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + for (; __n && __pos < this->size(); ++__pos) + { + const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); + if (__p) + return __pos; + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + size_type __size = this->size(); + if (__size && __n) + { + if (--__size > __pos) + __size = __pos; + do + { + if (traits_type::find(__s, __n, _M_data()[__size])) + return __size; + } + while (__size-- != 0); + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + for (; __pos < this->size(); ++__pos) + if (!traits_type::find(__s, __n, _M_data()[__pos])) + return __pos; + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_first_not_of(_CharT __c, size_type __pos) const noexcept + { + for (; __pos < this->size(); ++__pos) + if (!traits_type::eq(_M_data()[__pos], __c)) + return __pos; + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + ; + size_type __size = this->size(); + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::find(__s, __n, _M_data()[__size])) + return __size; + } + while (__size--); + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>:: + find_last_not_of(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->size(); + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::eq(_M_data()[__size], __c)) + return __size; + } + while (__size--); + } + return npos; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + int + basic_string<_CharT, _Traits, _Alloc>:: + compare(size_type __pos, size_type __n, const basic_string& __str) const + { + _M_check(__pos, "basic_string::compare"); + __n = _M_limit(__pos, __n); + const size_type __osize = __str.size(); + const size_type __len = std::min(__n, __osize); + int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); + if (!__r) + __r = _S_compare(__n, __osize); + return __r; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + int + basic_string<_CharT, _Traits, _Alloc>:: + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const + { + _M_check(__pos1, "basic_string::compare"); + __str._M_check(__pos2, "basic_string::compare"); + __n1 = _M_limit(__pos1, __n1); + __n2 = __str._M_limit(__pos2, __n2); + const size_type __len = std::min(__n1, __n2); + int __r = traits_type::compare(_M_data() + __pos1, + __str.data() + __pos2, __len); + if (!__r) + __r = _S_compare(__n1, __n2); + return __r; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + int + basic_string<_CharT, _Traits, _Alloc>:: + compare(const _CharT* __s) const + { + ; + const size_type __size = this->size(); + const size_type __osize = traits_type::length(__s); + const size_type __len = std::min(__size, __osize); + int __r = traits_type::compare(_M_data(), __s, __len); + if (!__r) + __r = _S_compare(__size, __osize); + return __r; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + int + basic_string <_CharT, _Traits, _Alloc>:: + compare(size_type __pos, size_type __n1, const _CharT* __s) const + { + ; + _M_check(__pos, "basic_string::compare"); + __n1 = _M_limit(__pos, __n1); + const size_type __osize = traits_type::length(__s); + const size_type __len = std::min(__n1, __osize); + int __r = traits_type::compare(_M_data() + __pos, __s, __len); + if (!__r) + __r = _S_compare(__n1, __osize); + return __r; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + int + basic_string <_CharT, _Traits, _Alloc>:: + compare(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) const + { + ; + _M_check(__pos, "basic_string::compare"); + __n1 = _M_limit(__pos, __n1); + const size_type __len = std::min(__n1, __n2); + int __r = traits_type::compare(_M_data() + __pos, __s, __len); + if (!__r) + __r = _S_compare(__n1, __n2); + return __r; + } + + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, + basic_string<_CharT, _Traits, _Alloc>& __str) + { + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef basic_string<_CharT, _Traits, _Alloc> __string_type; + typedef typename __istream_type::ios_base __ios_base; + typedef typename __istream_type::int_type __int_type; + typedef typename __string_type::size_type __size_type; + typedef ctype<_CharT> __ctype_type; + typedef typename __ctype_type::ctype_base __ctype_base; + + __size_type __extracted = 0; + typename __ios_base::iostate __err = __ios_base::goodbit; + typename __istream_type::sentry __cerb(__in, false); + if (__cerb) + { + try + { + + __str.erase(); + _CharT __buf[128]; + __size_type __len = 0; + const streamsize __w = __in.width(); + const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) + : __str.max_size(); + const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); + const __int_type __eof = _Traits::eof(); + __int_type __c = __in.rdbuf()->sgetc(); + + while (__extracted < __n + && !_Traits::eq_int_type(__c, __eof) + && !__ct.is(__ctype_base::space, + _Traits::to_char_type(__c))) + { + if (__len == sizeof(__buf) / sizeof(_CharT)) + { + __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); + __len = 0; + } + __buf[__len++] = _Traits::to_char_type(__c); + ++__extracted; + __c = __in.rdbuf()->snextc(); + } + __str.append(__buf, __len); + + if (_Traits::eq_int_type(__c, __eof)) + __err |= __ios_base::eofbit; + __in.width(0); + } + catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(__ios_base::badbit); + throw; + } + catch(...) + { + + + + __in._M_setstate(__ios_base::badbit); + } + } + + if (!__extracted) + __err |= __ios_base::failbit; + if (__err) + __in.setstate(__err); + return __in; + } + + template<typename _CharT, typename _Traits, typename _Alloc> + basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>& __in, + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) + { + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef basic_string<_CharT, _Traits, _Alloc> __string_type; + typedef typename __istream_type::ios_base __ios_base; + typedef typename __istream_type::int_type __int_type; + typedef typename __string_type::size_type __size_type; + + __size_type __extracted = 0; + const __size_type __n = __str.max_size(); + typename __ios_base::iostate __err = __ios_base::goodbit; + typename __istream_type::sentry __cerb(__in, true); + if (__cerb) + { + try + { + __str.erase(); + const __int_type __idelim = _Traits::to_int_type(__delim); + const __int_type __eof = _Traits::eof(); + __int_type __c = __in.rdbuf()->sgetc(); + + while (__extracted < __n + && !_Traits::eq_int_type(__c, __eof) + && !_Traits::eq_int_type(__c, __idelim)) + { + __str += _Traits::to_char_type(__c); + ++__extracted; + __c = __in.rdbuf()->snextc(); + } + + if (_Traits::eq_int_type(__c, __eof)) + __err |= __ios_base::eofbit; + else if (_Traits::eq_int_type(__c, __idelim)) + { + ++__extracted; + __in.rdbuf()->sbumpc(); + } + else + __err |= __ios_base::failbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(__ios_base::badbit); + throw; + } + catch(...) + { + + + + __in._M_setstate(__ios_base::badbit); + } + } + if (!__extracted) + __err |= __ios_base::failbit; + if (__err) + __in.setstate(__err); + return __in; + } + + + + + extern template class basic_string<char>; + extern template + basic_istream<char>& + operator>>(basic_istream<char>&, string&); + extern template + basic_ostream<char>& + operator<<(basic_ostream<char>&, const string&); + extern template + basic_istream<char>& + getline(basic_istream<char>&, string&, char); + extern template + basic_istream<char>& + getline(basic_istream<char>&, string&); + + + extern template class basic_string<wchar_t>; + extern template + basic_istream<wchar_t>& + operator>>(basic_istream<wchar_t>&, wstring&); + extern template + basic_ostream<wchar_t>& + operator<<(basic_ostream<wchar_t>&, const wstring&); + extern template + basic_istream<wchar_t>& + getline(basic_istream<wchar_t>&, wstring&, wchar_t); + extern template + basic_istream<wchar_t>& + getline(basic_istream<wchar_t>&, wstring&); + + + + +} +# 54 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/string" 2 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 1 3 +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 + +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 +# 158 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + enum float_round_style + { + round_indeterminate = -1, + round_toward_zero = 0, + round_to_nearest = 1, + round_toward_infinity = 2, + round_toward_neg_infinity = 3 + }; + + + + + + + + enum float_denorm_style + { + + denorm_indeterminate = -1, + + denorm_absent = 0, + + denorm_present = 1 + }; +# 202 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 + struct __numeric_limits_base + { + + + static constexpr bool is_specialized = false; + + + + + static constexpr int digits = 0; + + + static constexpr int digits10 = 0; + + + + + static constexpr int max_digits10 = 0; + + + + static constexpr bool is_signed = false; + + + static constexpr bool is_integer = false; + + + + + static constexpr bool is_exact = false; + + + + static constexpr int radix = 0; + + + + static constexpr int min_exponent = 0; + + + + static constexpr int min_exponent10 = 0; + + + + + static constexpr int max_exponent = 0; + + + + static constexpr int max_exponent10 = 0; + + + static constexpr bool has_infinity = false; + + + + static constexpr bool has_quiet_NaN = false; + + + + static constexpr bool has_signaling_NaN = false; + + + static constexpr float_denorm_style has_denorm = denorm_absent; + + + + static constexpr bool has_denorm_loss = false; + + + + static constexpr bool is_iec559 = false; + + + + + static constexpr bool is_bounded = false; +# 288 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 + static constexpr bool is_modulo = false; + + + static constexpr bool traps = false; + + + static constexpr bool tinyness_before = false; + + + + + static constexpr float_round_style round_style = + round_toward_zero; + }; +# 314 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 + template<typename _Tp> + struct numeric_limits : public __numeric_limits_base + { + + + static constexpr _Tp + min() noexcept { return _Tp(); } + + + static constexpr _Tp + max() noexcept { return _Tp(); } + + + + + static constexpr _Tp + lowest() noexcept { return _Tp(); } + + + + + static constexpr _Tp + epsilon() noexcept { return _Tp(); } + + + static constexpr _Tp + round_error() noexcept { return _Tp(); } + + + static constexpr _Tp + infinity() noexcept { return _Tp(); } + + + + static constexpr _Tp + quiet_NaN() noexcept { return _Tp(); } + + + + static constexpr _Tp + signaling_NaN() noexcept { return _Tp(); } + + + + + static constexpr _Tp + denorm_min() noexcept { return _Tp(); } + }; + + + template<typename _Tp> + struct numeric_limits<const _Tp> + : public numeric_limits<_Tp> { }; + + template<typename _Tp> + struct numeric_limits<volatile _Tp> + : public numeric_limits<_Tp> { }; + + template<typename _Tp> + struct numeric_limits<const volatile _Tp> + : public numeric_limits<_Tp> { }; + + + + + + + template<> + struct numeric_limits<bool> + { + static constexpr bool is_specialized = true; + + static constexpr bool + min() noexcept { return false; } + + static constexpr bool + max() noexcept { return true; } + + + static constexpr bool + lowest() noexcept { return min(); } + + static constexpr int digits = 1; + static constexpr int digits10 = 0; + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr bool + epsilon() noexcept { return false; } + + static constexpr bool + round_error() noexcept { return false; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr bool + infinity() noexcept { return false; } + + static constexpr bool + quiet_NaN() noexcept { return false; } + + static constexpr bool + signaling_NaN() noexcept { return false; } + + static constexpr bool + denorm_min() noexcept { return false; } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + + + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<char> + { + static constexpr bool is_specialized = true; + + static constexpr char + min() noexcept { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); } + + static constexpr char + max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } + + + static constexpr char + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); + static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = ((char)(-1) < 0); + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr char + epsilon() noexcept { return 0; } + + static constexpr char + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr + char infinity() noexcept { return char(); } + + static constexpr char + quiet_NaN() noexcept { return char(); } + + static constexpr char + signaling_NaN() noexcept { return char(); } + + static constexpr char + denorm_min() noexcept { return static_cast<char>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = !is_signed; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<signed char> + { + static constexpr bool is_specialized = true; + + static constexpr signed char + min() noexcept { return -0x7f - 1; } + + static constexpr signed char + max() noexcept { return 0x7f; } + + + static constexpr signed char + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = true; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr signed char + epsilon() noexcept { return 0; } + + static constexpr signed char + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr signed char + infinity() noexcept { return static_cast<signed char>(0); } + + static constexpr signed char + quiet_NaN() noexcept { return static_cast<signed char>(0); } + + static constexpr signed char + signaling_NaN() noexcept + { return static_cast<signed char>(0); } + + static constexpr signed char + denorm_min() noexcept + { return static_cast<signed char>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<unsigned char> + { + static constexpr bool is_specialized = true; + + static constexpr unsigned char + min() noexcept { return 0; } + + static constexpr unsigned char + max() noexcept { return 0x7f * 2U + 1; } + + + static constexpr unsigned char + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr unsigned char + epsilon() noexcept { return 0; } + + static constexpr unsigned char + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr unsigned char + infinity() noexcept + { return static_cast<unsigned char>(0); } + + static constexpr unsigned char + quiet_NaN() noexcept + { return static_cast<unsigned char>(0); } + + static constexpr unsigned char + signaling_NaN() noexcept + { return static_cast<unsigned char>(0); } + + static constexpr unsigned char + denorm_min() noexcept + { return static_cast<unsigned char>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = true; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<wchar_t> + { + static constexpr bool is_specialized = true; + + static constexpr wchar_t + min() noexcept { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); } + + static constexpr wchar_t + max() noexcept { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); } + + + static constexpr wchar_t + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = ((wchar_t)(-1) < 0); + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr wchar_t + epsilon() noexcept { return 0; } + + static constexpr wchar_t + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr wchar_t + infinity() noexcept { return wchar_t(); } + + static constexpr wchar_t + quiet_NaN() noexcept { return wchar_t(); } + + static constexpr wchar_t + signaling_NaN() noexcept { return wchar_t(); } + + static constexpr wchar_t + denorm_min() noexcept { return wchar_t(); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = !is_signed; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + + template<> + struct numeric_limits<char16_t> + { + static constexpr bool is_specialized = true; + + static constexpr char16_t + min() noexcept { return (((char16_t)(-1) < 0) ? -(((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0) - 1 : (char16_t)0); } + + static constexpr char16_t + max() noexcept { return (((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0); } + + static constexpr char16_t + lowest() noexcept { return min(); } + + static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); + static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); + static constexpr int max_digits10 = 0; + static constexpr bool is_signed = ((char16_t)(-1) < 0); + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr char16_t + epsilon() noexcept { return 0; } + + static constexpr char16_t + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr char16_t + infinity() noexcept { return char16_t(); } + + static constexpr char16_t + quiet_NaN() noexcept { return char16_t(); } + + static constexpr char16_t + signaling_NaN() noexcept { return char16_t(); } + + static constexpr char16_t + denorm_min() noexcept { return char16_t(); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = !is_signed; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style = round_toward_zero; + }; + + + template<> + struct numeric_limits<char32_t> + { + static constexpr bool is_specialized = true; + + static constexpr char32_t + min() noexcept { return (((char32_t)(-1) < 0) ? -(((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0) - 1 : (char32_t)0); } + + static constexpr char32_t + max() noexcept { return (((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0); } + + static constexpr char32_t + lowest() noexcept { return min(); } + + static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); + static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); + static constexpr int max_digits10 = 0; + static constexpr bool is_signed = ((char32_t)(-1) < 0); + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr char32_t + epsilon() noexcept { return 0; } + + static constexpr char32_t + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr char32_t + infinity() noexcept { return char32_t(); } + + static constexpr char32_t + quiet_NaN() noexcept { return char32_t(); } + + static constexpr char32_t + signaling_NaN() noexcept { return char32_t(); } + + static constexpr char32_t + denorm_min() noexcept { return char32_t(); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = !is_signed; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style = round_toward_zero; + }; + + + + template<> + struct numeric_limits<short> + { + static constexpr bool is_specialized = true; + + static constexpr short + min() noexcept { return -0x7fff - 1; } + + static constexpr short + max() noexcept { return 0x7fff; } + + + static constexpr short + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); + static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = true; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr short + epsilon() noexcept { return 0; } + + static constexpr short + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr short + infinity() noexcept { return short(); } + + static constexpr short + quiet_NaN() noexcept { return short(); } + + static constexpr short + signaling_NaN() noexcept { return short(); } + + static constexpr short + denorm_min() noexcept { return short(); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<unsigned short> + { + static constexpr bool is_specialized = true; + + static constexpr unsigned short + min() noexcept { return 0; } + + static constexpr unsigned short + max() noexcept { return 0x7fff * 2U + 1; } + + + static constexpr unsigned short + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr unsigned short + epsilon() noexcept { return 0; } + + static constexpr unsigned short + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr unsigned short + infinity() noexcept + { return static_cast<unsigned short>(0); } + + static constexpr unsigned short + quiet_NaN() noexcept + { return static_cast<unsigned short>(0); } + + static constexpr unsigned short + signaling_NaN() noexcept + { return static_cast<unsigned short>(0); } + + static constexpr unsigned short + denorm_min() noexcept + { return static_cast<unsigned short>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = true; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<int> + { + static constexpr bool is_specialized = true; + + static constexpr int + min() noexcept { return -0x7fffffff - 1; } + + static constexpr int + max() noexcept { return 0x7fffffff; } + + + static constexpr int + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); + static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = true; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr int + epsilon() noexcept { return 0; } + + static constexpr int + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr int + infinity() noexcept { return static_cast<int>(0); } + + static constexpr int + quiet_NaN() noexcept { return static_cast<int>(0); } + + static constexpr int + signaling_NaN() noexcept { return static_cast<int>(0); } + + static constexpr int + denorm_min() noexcept { return static_cast<int>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<unsigned int> + { + static constexpr bool is_specialized = true; + + static constexpr unsigned int + min() noexcept { return 0; } + + static constexpr unsigned int + max() noexcept { return 0x7fffffff * 2U + 1; } + + + static constexpr unsigned int + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr unsigned int + epsilon() noexcept { return 0; } + + static constexpr unsigned int + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr unsigned int + infinity() noexcept { return static_cast<unsigned int>(0); } + + static constexpr unsigned int + quiet_NaN() noexcept + { return static_cast<unsigned int>(0); } + + static constexpr unsigned int + signaling_NaN() noexcept + { return static_cast<unsigned int>(0); } + + static constexpr unsigned int + denorm_min() noexcept + { return static_cast<unsigned int>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = true; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<long> + { + static constexpr bool is_specialized = true; + + static constexpr long + min() noexcept { return -0x7fffffffffffffffL - 1; } + + static constexpr long + max() noexcept { return 0x7fffffffffffffffL; } + + + static constexpr long + lowest() noexcept { return min(); } + + + static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); + static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = true; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr long + epsilon() noexcept { return 0; } + + static constexpr long + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr long + infinity() noexcept { return static_cast<long>(0); } + + static constexpr long + quiet_NaN() noexcept { return static_cast<long>(0); } + + static constexpr long + signaling_NaN() noexcept { return static_cast<long>(0); } + + static constexpr long + denorm_min() noexcept { return static_cast<long>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<unsigned long> + { + static constexpr bool is_specialized = true; + + static constexpr unsigned long + min() noexcept { return 0; } + + static constexpr unsigned long + max() noexcept { return 0x7fffffffffffffffL * 2UL + 1; } + + + static constexpr unsigned long + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr unsigned long + epsilon() noexcept { return 0; } + + static constexpr unsigned long + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr unsigned long + infinity() noexcept + { return static_cast<unsigned long>(0); } + + static constexpr unsigned long + quiet_NaN() noexcept + { return static_cast<unsigned long>(0); } + + static constexpr unsigned long + signaling_NaN() noexcept + { return static_cast<unsigned long>(0); } + + static constexpr unsigned long + denorm_min() noexcept + { return static_cast<unsigned long>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = true; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<long long> + { + static constexpr bool is_specialized = true; + + static constexpr long long + min() noexcept { return -0x7fffffffffffffffLL - 1; } + + static constexpr long long + max() noexcept { return 0x7fffffffffffffffLL; } + + + static constexpr long long + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(long long) * 8 - ((long long)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = true; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr long long + epsilon() noexcept { return 0; } + + static constexpr long long + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr long long + infinity() noexcept { return static_cast<long long>(0); } + + static constexpr long long + quiet_NaN() noexcept { return static_cast<long long>(0); } + + static constexpr long long + signaling_NaN() noexcept + { return static_cast<long long>(0); } + + static constexpr long long + denorm_min() noexcept { return static_cast<long long>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; + + + template<> + struct numeric_limits<unsigned long long> + { + static constexpr bool is_specialized = true; + + static constexpr unsigned long long + min() noexcept { return 0; } + + static constexpr unsigned long long + max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } + + + static constexpr unsigned long long + lowest() noexcept { return min(); } + + + static constexpr int digits + = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); + static constexpr int digits10 + = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); + + static constexpr int max_digits10 = 0; + + static constexpr bool is_signed = false; + static constexpr bool is_integer = true; + static constexpr bool is_exact = true; + static constexpr int radix = 2; + + static constexpr unsigned long long + epsilon() noexcept { return 0; } + + static constexpr unsigned long long + round_error() noexcept { return 0; } + + static constexpr int min_exponent = 0; + static constexpr int min_exponent10 = 0; + static constexpr int max_exponent = 0; + static constexpr int max_exponent10 = 0; + + static constexpr bool has_infinity = false; + static constexpr bool has_quiet_NaN = false; + static constexpr bool has_signaling_NaN = false; + static constexpr float_denorm_style has_denorm + = denorm_absent; + static constexpr bool has_denorm_loss = false; + + static constexpr unsigned long long + infinity() noexcept + { return static_cast<unsigned long long>(0); } + + static constexpr unsigned long long + quiet_NaN() noexcept + { return static_cast<unsigned long long>(0); } + + static constexpr unsigned long long + signaling_NaN() noexcept + { return static_cast<unsigned long long>(0); } + + static constexpr unsigned long long + denorm_min() noexcept + { return static_cast<unsigned long long>(0); } + + static constexpr bool is_iec559 = false; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = true; + + static constexpr bool traps = true; + static constexpr bool tinyness_before = false; + static constexpr float_round_style round_style + = round_toward_zero; + }; +# 1592 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/limits" 3 + template<> + struct numeric_limits<float> + { + static constexpr bool is_specialized = true; + + static constexpr float + min() noexcept { return 1.17549435082228750796873653722224568e-38F; } + + static constexpr float + max() noexcept { return 3.40282346638528859811704183484516925e+38F; } + + + static constexpr float + lowest() noexcept { return -3.40282346638528859811704183484516925e+38F; } + + + static constexpr int digits = 24; + static constexpr int digits10 = 6; + + static constexpr int max_digits10 + = (2 + (24) * 643L / 2136); + + static constexpr bool is_signed = true; + static constexpr bool is_integer = false; + static constexpr bool is_exact = false; + static constexpr int radix = 2; + + static constexpr float + epsilon() noexcept { return 1.19209289550781250000000000000000000e-7F; } + + static constexpr float + round_error() noexcept { return 0.5F; } + + static constexpr int min_exponent = (-125); + static constexpr int min_exponent10 = (-37); + static constexpr int max_exponent = 128; + static constexpr int max_exponent10 = 38; + + static constexpr bool has_infinity = 1; + static constexpr bool has_quiet_NaN = 1; + static constexpr bool has_signaling_NaN = has_quiet_NaN; + static constexpr float_denorm_style has_denorm + = bool(1) ? denorm_present : denorm_absent; + static constexpr bool has_denorm_loss + = false; + + static constexpr float + infinity() noexcept { return __builtin_huge_valf(); } + + static constexpr float + quiet_NaN() noexcept { return __builtin_nanf(""); } + + static constexpr float + signaling_NaN() noexcept { return __builtin_nansf(""); } + + static constexpr float + denorm_min() noexcept { return 1.40129846432481707092372958328991613e-45F; } + + static constexpr bool is_iec559 + = has_infinity && has_quiet_NaN && has_denorm == denorm_present; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = false; + static constexpr bool tinyness_before + = false; + static constexpr float_round_style round_style + = round_to_nearest; + }; + + + + + + + template<> + struct numeric_limits<double> + { + static constexpr bool is_specialized = true; + + static constexpr double + min() noexcept { return double(2.22507385850720138309023271733240406e-308L); } + + static constexpr double + max() noexcept { return double(1.79769313486231570814527423731704357e+308L); } + + + static constexpr double + lowest() noexcept { return -double(1.79769313486231570814527423731704357e+308L); } + + + static constexpr int digits = 53; + static constexpr int digits10 = 15; + + static constexpr int max_digits10 + = (2 + (53) * 643L / 2136); + + static constexpr bool is_signed = true; + static constexpr bool is_integer = false; + static constexpr bool is_exact = false; + static constexpr int radix = 2; + + static constexpr double + epsilon() noexcept { return double(2.22044604925031308084726333618164062e-16L); } + + static constexpr double + round_error() noexcept { return 0.5; } + + static constexpr int min_exponent = (-1021); + static constexpr int min_exponent10 = (-307); + static constexpr int max_exponent = 1024; + static constexpr int max_exponent10 = 308; + + static constexpr bool has_infinity = 1; + static constexpr bool has_quiet_NaN = 1; + static constexpr bool has_signaling_NaN = has_quiet_NaN; + static constexpr float_denorm_style has_denorm + = bool(1) ? denorm_present : denorm_absent; + static constexpr bool has_denorm_loss + = false; + + static constexpr double + infinity() noexcept { return __builtin_huge_val(); } + + static constexpr double + quiet_NaN() noexcept { return __builtin_nan(""); } + + static constexpr double + signaling_NaN() noexcept { return __builtin_nans(""); } + + static constexpr double + denorm_min() noexcept { return double(4.94065645841246544176568792868221372e-324L); } + + static constexpr bool is_iec559 + = has_infinity && has_quiet_NaN && has_denorm == denorm_present; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = false; + static constexpr bool tinyness_before + = false; + static constexpr float_round_style round_style + = round_to_nearest; + }; + + + + + + + template<> + struct numeric_limits<long double> + { + static constexpr bool is_specialized = true; + + static constexpr long double + min() noexcept { return 3.36210314311209350626267781732175260e-4932L; } + + static constexpr long double + max() noexcept { return 1.18973149535723176508575932662800702e+4932L; } + + + static constexpr long double + lowest() noexcept { return -1.18973149535723176508575932662800702e+4932L; } + + + static constexpr int digits = 113; + static constexpr int digits10 = 33; + + static constexpr int max_digits10 + = (2 + (113) * 643L / 2136); + + static constexpr bool is_signed = true; + static constexpr bool is_integer = false; + static constexpr bool is_exact = false; + static constexpr int radix = 2; + + static constexpr long double + epsilon() noexcept { return 1.92592994438723585305597794258492732e-34L; } + + static constexpr long double + round_error() noexcept { return 0.5L; } + + static constexpr int min_exponent = (-16381); + static constexpr int min_exponent10 = (-4931); + static constexpr int max_exponent = 16384; + static constexpr int max_exponent10 = 4932; + + static constexpr bool has_infinity = 1; + static constexpr bool has_quiet_NaN = 1; + static constexpr bool has_signaling_NaN = has_quiet_NaN; + static constexpr float_denorm_style has_denorm + = bool(1) ? denorm_present : denorm_absent; + static constexpr bool has_denorm_loss + = false; + + static constexpr long double + infinity() noexcept { return __builtin_huge_vall(); } + + static constexpr long double + quiet_NaN() noexcept { return __builtin_nanl(""); } + + static constexpr long double + signaling_NaN() noexcept { return __builtin_nansl(""); } + + static constexpr long double + denorm_min() noexcept { return 6.47517511943802511092443895822764655e-4966L; } + + static constexpr bool is_iec559 + = has_infinity && has_quiet_NaN && has_denorm == denorm_present; + static constexpr bool is_bounded = true; + static constexpr bool is_modulo = false; + + static constexpr bool traps = false; + static constexpr bool tinyness_before = + false; + static constexpr float_round_style round_style = + round_to_nearest; + }; + + + + + + +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 3 + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<bool _TrivialValueTypes> + struct __uninitialized_copy + { + template<typename _InputIterator, typename _ForwardIterator> + static _ForwardIterator + __uninit_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { + _ForwardIterator __cur = __result; + try + { + for (; __first != __last; ++__first, ++__cur) + std::_Construct(std::__addressof(*__cur), *__first); + return __cur; + } + catch(...) + { + std::_Destroy(__result, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_copy<true> + { + template<typename _InputIterator, typename _ForwardIterator> + static _ForwardIterator + __uninit_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { return std::copy(__first, __last, __result); } + }; +# 105 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 + template<typename _InputIterator, typename _ForwardIterator> + inline _ForwardIterator + uninitialized_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { + typedef typename iterator_traits<_InputIterator>::value_type + _ValueType1; + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType2; + + + + + typedef typename iterator_traits<_InputIterator>::reference _RefType1; + typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; + const bool __assignable = is_assignable<_RefType2, _RefType1>::value; + + + return std::__uninitialized_copy<__is_trivial(_ValueType1) + && __is_trivial(_ValueType2) + && __assignable>:: + __uninit_copy(__first, __last, __result); + } + + + template<bool _TrivialValueType> + struct __uninitialized_fill + { + template<typename _ForwardIterator, typename _Tp> + static void + __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x) + { + _ForwardIterator __cur = __first; + try + { + for (; __cur != __last; ++__cur) + std::_Construct(std::__addressof(*__cur), __x); + } + catch(...) + { + std::_Destroy(__first, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_fill<true> + { + template<typename _ForwardIterator, typename _Tp> + static void + __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x) + { std::fill(__first, __last, __x); } + }; +# 171 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline void + uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + const bool __assignable = is_copy_assignable<_ValueType>::value; + + + std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>:: + __uninit_fill(__first, __last, __x); + } + + + template<bool _TrivialValueType> + struct __uninitialized_fill_n + { + template<typename _ForwardIterator, typename _Size, typename _Tp> + static _ForwardIterator + __uninit_fill_n(_ForwardIterator __first, _Size __n, + const _Tp& __x) + { + _ForwardIterator __cur = __first; + try + { + for (; __n > 0; --__n, ++__cur) + std::_Construct(std::__addressof(*__cur), __x); + return __cur; + } + catch(...) + { + std::_Destroy(__first, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_fill_n<true> + { + template<typename _ForwardIterator, typename _Size, typename _Tp> + static _ForwardIterator + __uninit_fill_n(_ForwardIterator __first, _Size __n, + const _Tp& __x) + { return std::fill_n(__first, __n, __x); } + }; +# 234 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 + template<typename _ForwardIterator, typename _Size, typename _Tp> + inline _ForwardIterator + uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + const bool __assignable = is_copy_assignable<_ValueType>::value; + + return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: + __uninit_fill_n(__first, __n, __x); + } + + + + + + + + template<typename _InputIterator, typename _ForwardIterator, + typename _Allocator> + _ForwardIterator + __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _Allocator& __alloc) + { + _ForwardIterator __cur = __result; + try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __first != __last; ++__first, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), *__first); + return __cur; + } + catch(...) + { + std::_Destroy(__result, __cur, __alloc); + throw; + } + } + + template<typename _InputIterator, typename _ForwardIterator, typename _Tp> + inline _ForwardIterator + __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, allocator<_Tp>&) + { return std::uninitialized_copy(__first, __last, __result); } + + template<typename _InputIterator, typename _ForwardIterator, + typename _Allocator> + inline _ForwardIterator + __uninitialized_move_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _Allocator& __alloc) + { + return std::__uninitialized_copy_a(std::make_move_iterator(__first), + std::make_move_iterator(__last), + __result, __alloc); + } + + template<typename _InputIterator, typename _ForwardIterator, + typename _Allocator> + inline _ForwardIterator + __uninitialized_move_if_noexcept_a(_InputIterator __first, + _InputIterator __last, + _ForwardIterator __result, + _Allocator& __alloc) + { + return std::__uninitialized_copy_a + (std::__make_move_if_noexcept_iterator(__first), + std::__make_move_if_noexcept_iterator(__last), __result, __alloc); + } + + template<typename _ForwardIterator, typename _Tp, typename _Allocator> + void + __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x, _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __cur != __last; ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), __x); + } + catch(...) + { + std::_Destroy(__first, __cur, __alloc); + throw; + } + } + + template<typename _ForwardIterator, typename _Tp, typename _Tp2> + inline void + __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x, allocator<_Tp2>&) + { std::uninitialized_fill(__first, __last, __x); } + + template<typename _ForwardIterator, typename _Size, typename _Tp, + typename _Allocator> + _ForwardIterator + __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, + const _Tp& __x, _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __n > 0; --__n, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), __x); + return __cur; + } + catch(...) + { + std::_Destroy(__first, __cur, __alloc); + throw; + } + } + + template<typename _ForwardIterator, typename _Size, typename _Tp, + typename _Tp2> + inline _ForwardIterator + __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, + const _Tp& __x, allocator<_Tp2>&) + { return std::uninitialized_fill_n(__first, __n, __x); } +# 370 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _ForwardIterator, typename _Allocator> + inline _ForwardIterator + __uninitialized_copy_move(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _ForwardIterator __result, + _Allocator& __alloc) + { + _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, + __result, + __alloc); + try + { + return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); + } + catch(...) + { + std::_Destroy(__result, __mid, __alloc); + throw; + } + } + + + + + + template<typename _InputIterator1, typename _InputIterator2, + typename _ForwardIterator, typename _Allocator> + inline _ForwardIterator + __uninitialized_move_copy(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _ForwardIterator __result, + _Allocator& __alloc) + { + _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, + __result, + __alloc); + try + { + return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); + } + catch(...) + { + std::_Destroy(__result, __mid, __alloc); + throw; + } + } + + + + + template<typename _ForwardIterator, typename _Tp, typename _InputIterator, + typename _Allocator> + inline _ForwardIterator + __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, + const _Tp& __x, _InputIterator __first, + _InputIterator __last, _Allocator& __alloc) + { + std::__uninitialized_fill_a(__result, __mid, __x, __alloc); + try + { + return std::__uninitialized_move_a(__first, __last, __mid, __alloc); + } + catch(...) + { + std::_Destroy(__result, __mid, __alloc); + throw; + } + } + + + + + template<typename _InputIterator, typename _ForwardIterator, typename _Tp, + typename _Allocator> + inline void + __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, + _ForwardIterator __first2, + _ForwardIterator __last2, const _Tp& __x, + _Allocator& __alloc) + { + _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, + __first2, + __alloc); + try + { + std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); + } + catch(...) + { + std::_Destroy(__first2, __mid2, __alloc); + throw; + } + } + + + + + + template<bool _TrivialValueType> + struct __uninitialized_default_1 + { + template<typename _ForwardIterator> + static void + __uninit_default(_ForwardIterator __first, _ForwardIterator __last) + { + _ForwardIterator __cur = __first; + try + { + for (; __cur != __last; ++__cur) + std::_Construct(std::__addressof(*__cur)); + } + catch(...) + { + std::_Destroy(__first, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_default_1<true> + { + template<typename _ForwardIterator> + static void + __uninit_default(_ForwardIterator __first, _ForwardIterator __last) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + std::fill(__first, __last, _ValueType()); + } + }; + + template<bool _TrivialValueType> + struct __uninitialized_default_n_1 + { + template<typename _ForwardIterator, typename _Size> + static _ForwardIterator + __uninit_default_n(_ForwardIterator __first, _Size __n) + { + _ForwardIterator __cur = __first; + try + { + for (; __n > 0; --__n, ++__cur) + std::_Construct(std::__addressof(*__cur)); + return __cur; + } + catch(...) + { + std::_Destroy(__first, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_default_n_1<true> + { + template<typename _ForwardIterator, typename _Size> + static _ForwardIterator + __uninit_default_n(_ForwardIterator __first, _Size __n) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + return std::fill_n(__first, __n, _ValueType()); + } + }; + + + + + template<typename _ForwardIterator> + inline void + __uninitialized_default(_ForwardIterator __first, + _ForwardIterator __last) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + const bool __assignable = is_copy_assignable<_ValueType>::value; + + std::__uninitialized_default_1<__is_trivial(_ValueType) + && __assignable>:: + __uninit_default(__first, __last); + } + + + + template<typename _ForwardIterator, typename _Size> + inline _ForwardIterator + __uninitialized_default_n(_ForwardIterator __first, _Size __n) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + const bool __assignable = is_copy_assignable<_ValueType>::value; + + return __uninitialized_default_n_1<__is_trivial(_ValueType) + && __assignable>:: + __uninit_default_n(__first, __n); + } + + + + + + template<typename _ForwardIterator, typename _Allocator> + void + __uninitialized_default_a(_ForwardIterator __first, + _ForwardIterator __last, + _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __cur != __last; ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur)); + } + catch(...) + { + std::_Destroy(__first, __cur, __alloc); + throw; + } + } + + template<typename _ForwardIterator, typename _Tp> + inline void + __uninitialized_default_a(_ForwardIterator __first, + _ForwardIterator __last, + allocator<_Tp>&) + { std::__uninitialized_default(__first, __last); } + + + + + + template<typename _ForwardIterator, typename _Size, typename _Allocator> + _ForwardIterator + __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, + _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __n > 0; --__n, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur)); + return __cur; + } + catch(...) + { + std::_Destroy(__first, __cur, __alloc); + throw; + } + } + + template<typename _ForwardIterator, typename _Size, typename _Tp> + inline _ForwardIterator + __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, + allocator<_Tp>&) + { return std::__uninitialized_default_n(__first, __n); } + + + template<typename _InputIterator, typename _Size, + typename _ForwardIterator> + _ForwardIterator + __uninitialized_copy_n(_InputIterator __first, _Size __n, + _ForwardIterator __result, input_iterator_tag) + { + _ForwardIterator __cur = __result; + try + { + for (; __n > 0; --__n, ++__first, ++__cur) + std::_Construct(std::__addressof(*__cur), *__first); + return __cur; + } + catch(...) + { + std::_Destroy(__result, __cur); + throw; + } + } + + template<typename _RandomAccessIterator, typename _Size, + typename _ForwardIterator> + inline _ForwardIterator + __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, + _ForwardIterator __result, + random_access_iterator_tag) + { return std::uninitialized_copy(__first, __first + __n, __result); } +# 677 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_uninitialized.h" 3 + template<typename _InputIterator, typename _Size, typename _ForwardIterator> + inline _ForwardIterator + uninitialized_copy_n(_InputIterator __first, _Size __n, + _ForwardIterator __result) + { return std::__uninitialized_copy_n(__first, __n, __result, + std::__iterator_category(__first)); } + + + +} +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 1 3 +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + template<typename _Tp, typename _Alloc> + struct _Vector_base + { + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<_Tp>::other _Tp_alloc_type; + typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer + pointer; + + struct _Vector_impl + : public _Tp_alloc_type + { + pointer _M_start; + pointer _M_finish; + pointer _M_end_of_storage; + + _Vector_impl() + : _Tp_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage() + { } + + _Vector_impl(_Tp_alloc_type const& __a) noexcept + : _Tp_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage() + { } + + + _Vector_impl(_Tp_alloc_type&& __a) noexcept + : _Tp_alloc_type(std::move(__a)), + _M_start(), _M_finish(), _M_end_of_storage() + { } + + + void _M_swap_data(_Vector_impl& __x) noexcept + { + std::swap(_M_start, __x._M_start); + std::swap(_M_finish, __x._M_finish); + std::swap(_M_end_of_storage, __x._M_end_of_storage); + } + }; + + public: + typedef _Alloc allocator_type; + + _Tp_alloc_type& + _M_get_Tp_allocator() noexcept + { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } + + const _Tp_alloc_type& + _M_get_Tp_allocator() const noexcept + { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); } + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_get_Tp_allocator()); } + + _Vector_base() + : _M_impl() { } + + _Vector_base(const allocator_type& __a) noexcept + : _M_impl(__a) { } + + _Vector_base(size_t __n) + : _M_impl() + { _M_create_storage(__n); } + + _Vector_base(size_t __n, const allocator_type& __a) + : _M_impl(__a) + { _M_create_storage(__n); } + + + _Vector_base(_Tp_alloc_type&& __a) noexcept + : _M_impl(std::move(__a)) { } + + _Vector_base(_Vector_base&& __x) noexcept + : _M_impl(std::move(__x._M_get_Tp_allocator())) + { this->_M_impl._M_swap_data(__x._M_impl); } + + _Vector_base(_Vector_base&& __x, const allocator_type& __a) + : _M_impl(__a) + { + if (__x.get_allocator() == __a) + this->_M_impl._M_swap_data(__x._M_impl); + else + { + size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; + _M_create_storage(__n); + } + } + + + ~_Vector_base() noexcept + { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); } + + public: + _Vector_impl _M_impl; + + pointer + _M_allocate(size_t __n) + { + typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; + return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); + } + + void + _M_deallocate(pointer __p, size_t __n) + { + typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; + if (__p) + _Tr::deallocate(_M_impl, __p, __n); + } + + private: + void + _M_create_storage(size_t __n) + { + this->_M_impl._M_start = this->_M_allocate(__n); + this->_M_impl._M_finish = this->_M_impl._M_start; + this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; + } + }; +# 213 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Tp, typename _Alloc = std::allocator<_Tp> > + class vector : protected _Vector_base<_Tp, _Alloc> + { + + typedef typename _Alloc::value_type _Alloc_value_type; + + + + 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; + + public: + typedef _Tp value_type; + typedef typename _Base::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef typename _Alloc_traits::reference reference; + typedef typename _Alloc_traits::const_reference const_reference; + typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator; + typedef __gnu_cxx::__normal_iterator<const_pointer, vector> + const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Alloc allocator_type; + + protected: + using _Base::_M_allocate; + using _Base::_M_deallocate; + using _Base::_M_impl; + using _Base::_M_get_Tp_allocator; + + public: + + + + + + + vector() + + noexcept(is_nothrow_default_constructible<_Alloc>::value) + + : _Base() { } + + + + + + explicit + vector(const allocator_type& __a) noexcept + : _Base(__a) { } +# 276 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + explicit + vector(size_type __n, const allocator_type& __a = allocator_type()) + : _Base(__n, __a) + { _M_default_initialize(__n); } +# 289 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector(size_type __n, const value_type& __value, + const allocator_type& __a = allocator_type()) + : _Base(__n, __a) + { _M_fill_initialize(__n, __value); } +# 318 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector(const vector& __x) + : _Base(__x.size(), + _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) + { this->_M_impl._M_finish = + std::__uninitialized_copy_a(__x.begin(), __x.end(), + this->_M_impl._M_start, + _M_get_Tp_allocator()); + } +# 335 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector(vector&& __x) noexcept + : _Base(std::move(__x)) { } + + + vector(const vector& __x, const allocator_type& __a) + : _Base(__x.size(), __a) + { this->_M_impl._M_finish = + std::__uninitialized_copy_a(__x.begin(), __x.end(), + this->_M_impl._M_start, + _M_get_Tp_allocator()); + } + + + vector(vector&& __rv, const allocator_type& __m) + noexcept(_Alloc_traits::_S_always_equal()) + : _Base(std::move(__rv), __m) + { + if (__rv.get_allocator() != __m) + { + this->_M_impl._M_finish = + std::__uninitialized_move_a(__rv.begin(), __rv.end(), + this->_M_impl._M_start, + _M_get_Tp_allocator()); + __rv.clear(); + } + } +# 373 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector(initializer_list<value_type> __l, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_range_initialize(__l.begin(), __l.end(), + random_access_iterator_tag()); + } +# 399 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +# 423 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + ~vector() noexcept + { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); } +# 435 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector& + operator=(const vector& __x); +# 447 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector& + operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) + { + constexpr bool __move_storage = + _Alloc_traits::_S_propagate_on_move_assign() + || _Alloc_traits::_S_always_equal(); + _M_move_assign(std::move(__x), + integral_constant<bool, __move_storage>()); + return *this; + } +# 469 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + vector& + operator=(initializer_list<value_type> __l) + { + this->assign(__l.begin(), __l.end()); + return *this; + } +# 487 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + assign(size_type __n, const value_type& __val) + { _M_fill_assign(__n, __val); } +# 504 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +# 532 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + assign(initializer_list<value_type> __l) + { this->assign(__l.begin(), __l.end()); } + + + + using _Base::get_allocator; + + + + + + + + iterator + begin() noexcept + { return iterator(this->_M_impl._M_start); } + + + + + + + const_iterator + begin() const noexcept + { return const_iterator(this->_M_impl._M_start); } + + + + + + + iterator + end() noexcept + { return iterator(this->_M_impl._M_finish); } + + + + + + + const_iterator + end() const noexcept + { return const_iterator(this->_M_impl._M_finish); } + + + + + + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + + + + + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + + + + + + reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + + + + + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + + + + + + + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_impl._M_start); } + + + + + + + const_iterator + cend() const noexcept + { return const_iterator(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()); } + + + + + size_type + size() const noexcept + { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } + + + size_type + max_size() const noexcept + { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } +# 672 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + resize(size_type __new_size) + { + if (__new_size > size()) + _M_default_append(__new_size - size()); + else if (__new_size < size()) + _M_erase_at_end(this->_M_impl._M_start + __new_size); + } +# 692 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + resize(size_type __new_size, const value_type& __x) + { + if (__new_size > size()) + insert(end(), __new_size - size(), __x); + else if (__new_size < size()) + _M_erase_at_end(this->_M_impl._M_start + __new_size); + } +# 724 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + shrink_to_fit() + { _M_shrink_to_fit(); } + + + + + + + size_type + capacity() const noexcept + { return size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); } + + + + + + bool + empty() const noexcept + { return begin() == end(); } +# 763 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + reserve(size_type __n); +# 778 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + reference + operator[](size_type __n) noexcept + { return *(this->_M_impl._M_start + __n); } +# 793 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + const_reference + operator[](size_type __n) const noexcept + { return *(this->_M_impl._M_start + __n); } + + protected: + + void + _M_range_check(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") + + , + __n, this->size()); + } + + public: +# 821 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + reference + at(size_type __n) + { + _M_range_check(__n); + return (*this)[__n]; + } +# 839 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + const_reference + at(size_type __n) const + { + _M_range_check(__n); + return (*this)[__n]; + } + + + + + + reference + front() noexcept + { return *begin(); } + + + + + + const_reference + front() const noexcept + { return *begin(); } + + + + + + reference + back() noexcept + { return *(end() - 1); } + + + + + + const_reference + back() const noexcept + { return *(end() - 1); } +# 886 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + _Tp* + + + + data() noexcept + { return _M_data_ptr(this->_M_impl._M_start); } + + + const _Tp* + + + + data() const noexcept + { return _M_data_ptr(this->_M_impl._M_start); } +# 912 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + push_back(const value_type& __x) + { + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + __x); + ++this->_M_impl._M_finish; + } + else + + _M_emplace_back_aux(__x); + + + + } + + + void + push_back(value_type&& __x) + { emplace_back(std::move(__x)); } + + template<typename... _Args> + void + emplace_back(_Args&&... __args); +# 948 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + pop_back() noexcept + { + --this->_M_impl._M_finish; + _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); + } +# 968 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename... _Args> + iterator + emplace(const_iterator __position, _Args&&... __args); +# 983 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + insert(const_iterator __position, const value_type& __x); +# 1013 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + insert(const_iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } +# 1030 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + insert(const_iterator __position, initializer_list<value_type> __l) + { return this->insert(__position, __l.begin(), __l.end()); } +# 1050 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + insert(const_iterator __position, size_type __n, const value_type& __x) + { + difference_type __offset = __position - cbegin(); + _M_fill_insert(begin() + __offset, __n, __x); + return begin() + __offset; + } +# 1092 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + iterator + insert(const_iterator __position, _InputIterator __first, + _InputIterator __last) + { + difference_type __offset = __position - cbegin(); + _M_insert_dispatch(begin() + __offset, + __first, __last, __false_type()); + return begin() + __offset; + } +# 1144 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + + erase(const_iterator __position) + { return _M_erase(begin() + (__position - cbegin())); } +# 1171 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + iterator + + erase(const_iterator __first, const_iterator __last) + { + const auto __beg = begin(); + const auto __cbeg = cbegin(); + return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); + } +# 1193 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + void + swap(vector& __x) + + noexcept(_Alloc_traits::_S_nothrow_swap()) + + { + this->_M_impl._M_swap_data(__x._M_impl); + _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), + __x._M_get_Tp_allocator()); + } + + + + + + + + void + clear() noexcept + { _M_erase_at_end(this->_M_impl._M_start); } + + protected: + + + + + template<typename _ForwardIterator> + pointer + _M_allocate_and_copy(size_type __n, + _ForwardIterator __first, _ForwardIterator __last) + { + pointer __result = this->_M_allocate(__n); + try + { + std::__uninitialized_copy_a(__first, __last, __result, + _M_get_Tp_allocator()); + return __result; + } + catch(...) + { + _M_deallocate(__result, __n); + throw; + } + } +# 1245 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Integer> + void + _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) + { + this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n)); + this->_M_impl._M_end_of_storage = + this->_M_impl._M_start + static_cast<size_type>(__n); + _M_fill_initialize(static_cast<size_type>(__n), __value); + } + + + template<typename _InputIterator> + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { + typedef typename std::iterator_traits<_InputIterator>:: + iterator_category _IterCategory; + _M_range_initialize(__first, __last, _IterCategory()); + } + + + template<typename _InputIterator> + void + _M_range_initialize(_InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + + emplace_back(*__first); + + + + } + + + template<typename _ForwardIterator> + void + _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); + this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; + this->_M_impl._M_finish = + std::__uninitialized_copy_a(__first, __last, + this->_M_impl._M_start, + _M_get_Tp_allocator()); + } + + + + void + _M_fill_initialize(size_type __n, const value_type& __value) + { + this->_M_impl._M_finish = + std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, + _M_get_Tp_allocator()); + } + + + + void + _M_default_initialize(size_type __n) + { + this->_M_impl._M_finish = + std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, + _M_get_Tp_allocator()); + } +# 1323 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Integer> + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + + template<typename _InputIterator> + void + _M_assign_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { + typedef typename std::iterator_traits<_InputIterator>:: + iterator_category _IterCategory; + _M_assign_aux(__first, __last, _IterCategory()); + } + + + template<typename _InputIterator> + void + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag); + + + template<typename _ForwardIterator> + void + _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag); + + + + void + _M_fill_assign(size_type __n, const value_type& __val); +# 1363 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Integer> + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, + __true_type) + { _M_fill_insert(__pos, __n, __val); } + + + template<typename _InputIterator> + void + _M_insert_dispatch(iterator __pos, _InputIterator __first, + _InputIterator __last, __false_type) + { + typedef typename std::iterator_traits<_InputIterator>:: + iterator_category _IterCategory; + _M_range_insert(__pos, __first, __last, _IterCategory()); + } + + + template<typename _InputIterator> + void + _M_range_insert(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag); + + + template<typename _ForwardIterator> + void + _M_range_insert(iterator __pos, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag); + + + + void + _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); + + + + void + _M_default_append(size_type __n); + + bool + _M_shrink_to_fit(); + + + + + + + + template<typename... _Args> + void + _M_insert_aux(iterator __position, _Args&&... __args); + + template<typename... _Args> + void + _M_emplace_back_aux(_Args&&... __args); + + + + size_type + _M_check_len(size_type __n, const char* __s) const + { + if (max_size() - size() < __n) + __throw_length_error((__s)); + + const size_type __len = size() + std::max(size(), __n); + return (__len < size() || __len > max_size()) ? max_size() : __len; + } + + + + + + void + _M_erase_at_end(pointer __pos) noexcept + { + std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator()); + this->_M_impl._M_finish = __pos; + } + + iterator + _M_erase(iterator __position); + + iterator + _M_erase(iterator __first, iterator __last); + + + private: + + + + void + _M_move_assign(vector&& __x, std::true_type) noexcept + { + vector __tmp(get_allocator()); + this->_M_impl._M_swap_data(__tmp._M_impl); + this->_M_impl._M_swap_data(__x._M_impl); + std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); + } + + + + void + _M_move_assign(vector&& __x, std::false_type) + { + if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) + _M_move_assign(std::move(__x), std::true_type()); + else + { + + + this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), + std::__make_move_if_noexcept_iterator(__x.end())); + __x.clear(); + } + } + + + + template<typename _Up> + _Up* + _M_data_ptr(_Up* __ptr) const + { return __ptr; } + + template<typename _Ptr> + typename std::pointer_traits<_Ptr>::element_type* + _M_data_ptr(_Ptr __ptr) const + { return empty() ? nullptr : std::__addressof(*__ptr); } + + + + + + + }; +# 1509 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Tp, typename _Alloc> + inline bool + operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return (__x.size() == __y.size() + && std::equal(__x.begin(), __x.end(), __y.begin())); } +# 1526 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_vector.h" 3 + template<typename _Tp, typename _Alloc> + inline bool + operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return std::lexicographical_compare(__x.begin(), __x.end(), + __y.begin(), __y.end()); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return __y < __x; } + + + template<typename _Tp, typename _Alloc> + inline bool + operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + + template<typename _Tp, typename _Alloc> + inline void + swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) + { __x.swap(__y); } + + +} +# 65 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 1 3 +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + typedef unsigned long _Bit_type; + enum { _S_word_bit = int(8 * 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() noexcept : _M_p(0), _M_mask(0) { } + + operator bool() const noexcept + { return !!(*_M_p & _M_mask); } + + _Bit_reference& + operator=(bool __x) noexcept + { + if (__x) + *_M_p |= _M_mask; + else + *_M_p &= ~_M_mask; + return *this; + } + + _Bit_reference& + operator=(const _Bit_reference& __x) 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() noexcept + { *_M_p ^= _M_mask; } + }; + + + 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; + } + + + struct _Bit_iterator_base + : public std::iterator<std::random_access_iterator_tag, bool> + { + _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<unsigned int>(__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<typename _Alloc> + 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() + { } + + + _Bvector_impl(_Bit_alloc_type&& __a) + : _Bit_alloc_type(std::move(__a)), _M_start(), _M_finish(), + _M_end_of_storage() + { } + + + _Bit_type* + _M_end_addr() const 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() noexcept + { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); } + + const _Bit_alloc_type& + _M_get_Bit_allocator() const noexcept + { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); } + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_get_Bit_allocator()); } + + _Bvector_base() + : _M_impl() { } + + _Bvector_base(const allocator_type& __a) + : _M_impl(__a) { } + + + _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; + } + + + ~_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); + } + } + + static size_t + _S_nword(size_t __n) + { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } + }; + + +} + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 540 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 +template<typename _Alloc> + class vector<bool, _Alloc> : 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; + + + template<typename> friend struct hash; + + + 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_iterator> const_reverse_iterator; + typedef std::reverse_iterator<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() + + noexcept(is_nothrow_default_constructible<allocator_type>::value) + + : _Base() { } + + explicit + vector(const allocator_type& __a) + : _Base(__a) { } + + + 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); + } +# 611 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 + 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); + } + + + 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<bool> __l, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_initialize_range(__l.begin(), __l.end(), + random_access_iterator_tag()); + } + + + + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +# 677 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 + ~vector() noexcept { } + + vector& + operator=(const vector& __x) + { + if (&__x == this) + return *this; + + 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()); + } + + 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; + } + + + 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<bool> __l) + { + this->assign (__l.begin(), __l.end()); + return *this; + } + + + + + + + void + assign(size_type __n, const bool& __x) + { _M_fill_assign(__n, __x); } + + + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +# 773 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 + void + assign(initializer_list<bool> __l) + { this->assign(__l.begin(), __l.end()); } + + + iterator + begin() noexcept + { return this->_M_impl._M_start; } + + const_iterator + begin() const noexcept + { return this->_M_impl._M_start; } + + iterator + end() noexcept + { return this->_M_impl._M_finish; } + + const_iterator + end() const noexcept + { return this->_M_impl._M_finish; } + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + + 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()); } + + + size_type + size() const noexcept + { return size_type(end() - begin()); } + + size_type + max_size() const noexcept + { + const size_type __isize = + __gnu_cxx::__numeric_traits<difference_type>::__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 noexcept + { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) + - begin()); } + + bool + empty() const 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(("vector<bool>::_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(("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); } + + + + + + + void + data() 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) + + noexcept(_Bit_alloc_traits::_S_nothrow_swap()) + + { + 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()); + } + + + static void + swap(reference __x, reference __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + iterator + + insert(const_iterator __position, const bool& __x = bool()) + + + + { + 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; + } + + + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + 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; + } +# 992 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_bvector.h" 3 + 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; + } + + + + + + + + iterator + insert(const_iterator __p, initializer_list<bool> __l) + { return this->insert(__p, __l.begin(), __l.end()); } + + + void + pop_back() + { --this->_M_impl._M_finish; } + + iterator + + erase(const_iterator __position) + + + + { return _M_erase(__position._M_const_cast()); } + + iterator + + erase(const_iterator __first, const_iterator __last) + + + + { 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); + } + + + void + shrink_to_fit() + { _M_shrink_to_fit(); } + + + void + flip() 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() noexcept + { _M_erase_at_end(begin()); } + + + template<typename... _Args> + void + emplace_back(_Args&&... __args) + { push_back(bool(__args...)); } + + template<typename... _Args> + iterator + emplace(const_iterator __pos, _Args&&... __args) + { return insert(__pos, bool(__args...)); } + + + protected: + + 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); + + + bool + _M_shrink_to_fit(); + + + + + + + template<typename _Integer> + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { + _M_initialize(static_cast<size_type>(__n)); + std::fill(this->_M_impl._M_start._M_p, + this->_M_impl._M_end_addr(), __x ? ~0 : 0); + } + + template<typename _InputIterator> + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { _M_initialize_range(__first, __last, + std::__iterator_category(__first)); } + + template<typename _InputIterator> + void + _M_initialize_range(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + for (; __first != __last; ++__first) + push_back(*__first); + } + + template<typename _ForwardIterator> + 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); + } + + + + template<typename _Integer> + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + template<class _InputIterator> + 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<typename _InputIterator> + 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<typename _ForwardIterator> + 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); + } + } + + + + + + template<typename _Integer> + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, + __true_type) + { _M_fill_insert(__pos, __n, __x); } + + template<typename _InputIterator> + 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<typename _InputIterator> + void + _M_insert_range(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + { + __pos = insert(__pos, *__first); + ++__pos; + } + } + + template<typename _ForwardIterator> + 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((__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); + }; + + +} + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + template<typename _Alloc> + struct hash<std::vector<bool, _Alloc>> + : public __hash_base<size_t, std::vector<bool, _Alloc>> + { + size_t + operator()(const std::vector<bool, _Alloc>&) const noexcept; + }; + + +} +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 2 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/vector.tcc" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/vector.tcc" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Tp, typename _Alloc> + void + vector<_Tp, _Alloc>:: + reserve(size_type __n) + { + if (__n > this->max_size()) + __throw_length_error(("vector::reserve")); + if (this->capacity() < __n) + { + const size_type __old_size = size(); + pointer __tmp = _M_allocate_and_copy(__n, + std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), + std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); + 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 = __tmp; + this->_M_impl._M_finish = __tmp + __old_size; + this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; + } + } + + + template<typename _Tp, typename _Alloc> + template<typename... _Args> + void + vector<_Tp, _Alloc>:: + emplace_back(_Args&&... __args) + { + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + std::forward<_Args>(__args)...); + ++this->_M_impl._M_finish; + } + else + _M_emplace_back_aux(std::forward<_Args>(__args)...); + } + + + template<typename _Tp, typename _Alloc> + typename vector<_Tp, _Alloc>::iterator + vector<_Tp, _Alloc>:: + + insert(const_iterator __position, const value_type& __x) + + + + { + const size_type __n = __position - begin(); + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage + && __position == end()) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, __x); + ++this->_M_impl._M_finish; + } + else + { + + const auto __pos = begin() + (__position - cbegin()); + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) + { + _Tp __x_copy = __x; + _M_insert_aux(__pos, std::move(__x_copy)); + } + else + _M_insert_aux(__pos, __x); + + + + } + return iterator(this->_M_impl._M_start + __n); + } + + template<typename _Tp, typename _Alloc> + typename vector<_Tp, _Alloc>::iterator + vector<_Tp, _Alloc>:: + _M_erase(iterator __position) + { + if (__position + 1 != end()) + std::move(__position + 1, end(), __position); + --this->_M_impl._M_finish; + _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); + return __position; + } + + template<typename _Tp, typename _Alloc> + typename vector<_Tp, _Alloc>::iterator + vector<_Tp, _Alloc>:: + _M_erase(iterator __first, iterator __last) + { + if (__first != __last) + { + if (__last != end()) + std::move(__last, end(), __first); + _M_erase_at_end(__first.base() + (end() - __last)); + } + return __first; + } + + template<typename _Tp, typename _Alloc> + vector<_Tp, _Alloc>& + vector<_Tp, _Alloc>:: + operator=(const vector<_Tp, _Alloc>& __x) + { + if (&__x != this) + { + + if (_Alloc_traits::_S_propagate_on_copy_assign()) + { + if (!_Alloc_traits::_S_always_equal() + && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) + { + + this->clear(); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = nullptr; + this->_M_impl._M_finish = nullptr; + this->_M_impl._M_end_of_storage = nullptr; + } + std::__alloc_on_copy(_M_get_Tp_allocator(), + __x._M_get_Tp_allocator()); + } + + const size_type __xlen = __x.size(); + if (__xlen > capacity()) + { + pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), + __x.end()); + 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 = __tmp; + this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; + } + else if (size() >= __xlen) + { + std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), + end(), _M_get_Tp_allocator()); + } + else + { + std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), + this->_M_impl._M_start); + std::__uninitialized_copy_a(__x._M_impl._M_start + size(), + __x._M_impl._M_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + } + this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; + } + return *this; + } + + template<typename _Tp, typename _Alloc> + void + vector<_Tp, _Alloc>:: + _M_fill_assign(size_t __n, const value_type& __val) + { + if (__n > capacity()) + { + vector __tmp(__n, __val, _M_get_Tp_allocator()); + __tmp._M_impl._M_swap_data(this->_M_impl); + } + else if (__n > size()) + { + std::fill(begin(), end(), __val); + this->_M_impl._M_finish = + std::__uninitialized_fill_n_a(this->_M_impl._M_finish, + __n - size(), __val, + _M_get_Tp_allocator()); + } + else + _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); + } + + template<typename _Tp, typename _Alloc> + template<typename _InputIterator> + void + vector<_Tp, _Alloc>:: + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + pointer __cur(this->_M_impl._M_start); + for (; __first != __last && __cur != this->_M_impl._M_finish; + ++__cur, ++__first) + *__cur = *__first; + if (__first == __last) + _M_erase_at_end(__cur); + else + insert(end(), __first, __last); + } + + template<typename _Tp, typename _Alloc> + template<typename _ForwardIterator> + void + vector<_Tp, _Alloc>:: + _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __len = std::distance(__first, __last); + + if (__len > capacity()) + { + pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); + 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 = __tmp; + this->_M_impl._M_finish = this->_M_impl._M_start + __len; + this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; + } + else if (size() >= __len) + _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, size()); + std::copy(__first, __mid, this->_M_impl._M_start); + this->_M_impl._M_finish = + std::__uninitialized_copy_a(__mid, __last, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + } + } + + + template<typename _Tp, typename _Alloc> + template<typename... _Args> + typename vector<_Tp, _Alloc>::iterator + vector<_Tp, _Alloc>:: + emplace(const_iterator __position, _Args&&... __args) + { + const size_type __n = __position - begin(); + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage + && __position == end()) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + std::forward<_Args>(__args)...); + ++this->_M_impl._M_finish; + } + else + _M_insert_aux(begin() + (__position - cbegin()), + std::forward<_Args>(__args)...); + return iterator(this->_M_impl._M_start + __n); + } + + template<typename _Tp, typename _Alloc> + template<typename... _Args> + void + vector<_Tp, _Alloc>:: + _M_insert_aux(iterator __position, _Args&&... __args) + + + + + + + { + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + std::move(*(this->_M_impl._M_finish - 1)) + ); + ++this->_M_impl._M_finish; + + + + std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) + + ; + + + + *__position = _Tp(std::forward<_Args>(__args)...); + + } + else + { + const size_type __len = + _M_check_len(size_type(1), "vector::_M_insert_aux"); + const size_type __elems_before = __position - begin(); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + try + { + + + + + _Alloc_traits::construct(this->_M_impl, + __new_start + __elems_before, + + std::forward<_Args>(__args)...); + + + + __new_finish = pointer(); + + __new_finish + = std::__uninitialized_move_if_noexcept_a + (this->_M_impl._M_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, + __new_finish, _M_get_Tp_allocator()); + } + catch(...) + { + if (!__new_finish) + _Alloc_traits::destroy(this->_M_impl, + __new_start + __elems_before); + else + std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + throw; + } + 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_end_of_storage = __new_start + __len; + } + } + + + template<typename _Tp, typename _Alloc> + template<typename... _Args> + void + vector<_Tp, _Alloc>:: + _M_emplace_back_aux(_Args&&... __args) + { + const size_type __len = + _M_check_len(size_type(1), "vector::_M_emplace_back_aux"); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + try + { + _Alloc_traits::construct(this->_M_impl, __new_start + size(), + std::forward<_Args>(__args)...); + __new_finish = pointer(); + + __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; + } + catch(...) + { + if (!__new_finish) + _Alloc_traits::destroy(this->_M_impl, __new_start + size()); + else + std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + throw; + } + 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_end_of_storage = __new_start + __len; + } + + + template<typename _Tp, typename _Alloc> + void + vector<_Tp, _Alloc>:: + _M_fill_insert(iterator __position, size_type __n, const value_type& __x) + { + if (__n != 0) + { + if (size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_finish) >= __n) + { + value_type __x_copy = __x; + const size_type __elems_after = end() - __position; + pointer __old_finish(this->_M_impl._M_finish); + if (__elems_after > __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; + std::move_backward(__position.base(), __old_finish - __n, __old_finish) + ; + std::fill(__position.base(), __position.base() + __n, + __x_copy); + } + else + { + this->_M_impl._M_finish = + std::__uninitialized_fill_n_a(this->_M_impl._M_finish, + __n - __elems_after, + __x_copy, + _M_get_Tp_allocator()); + std::__uninitialized_move_a(__position.base(), __old_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish += __elems_after; + std::fill(__position.base(), __old_finish, __x_copy); + } + } + else + { + const size_type __len = + _M_check_len(__n, "vector::_M_fill_insert"); + const size_type __elems_before = __position - begin(); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + try + { + + std::__uninitialized_fill_n_a(__new_start + __elems_before, + __n, __x, + _M_get_Tp_allocator()); + __new_finish = pointer(); + + __new_finish + = std::__uninitialized_move_if_noexcept_a + (this->_M_impl._M_start, __position.base(), + __new_start, _M_get_Tp_allocator()); + + __new_finish += __n; + + __new_finish + = std::__uninitialized_move_if_noexcept_a + (__position.base(), this->_M_impl._M_finish, + __new_finish, _M_get_Tp_allocator()); + } + catch(...) + { + if (!__new_finish) + std::_Destroy(__new_start + __elems_before, + __new_start + __elems_before + __n, + _M_get_Tp_allocator()); + else + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + throw; + } + 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_end_of_storage = __new_start + __len; + } + } + } + + + template<typename _Tp, typename _Alloc> + void + vector<_Tp, _Alloc>:: + _M_default_append(size_type __n) + { + if (__n != 0) + { + if (size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_finish) >= __n) + { + this->_M_impl._M_finish = + std::__uninitialized_default_n_a(this->_M_impl._M_finish, + __n, _M_get_Tp_allocator()); + } + 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); + 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()); + } + catch(...) + { + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + throw; + } + 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_end_of_storage = __new_start + __len; + } + } + } + + template<typename _Tp, typename _Alloc> + bool + vector<_Tp, _Alloc>:: + _M_shrink_to_fit() + { + if (capacity() == size()) + return false; + return std::__shrink_to_fit_aux<vector>::_S_do_it(*this); + } + + + template<typename _Tp, typename _Alloc> + template<typename _InputIterator> + void + vector<_Tp, _Alloc>:: + _M_range_insert(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + { + __pos = insert(__pos, *__first); + ++__pos; + } + } + + template<typename _Tp, typename _Alloc> + template<typename _ForwardIterator> + void + vector<_Tp, _Alloc>:: + _M_range_insert(iterator __position, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag) + { + if (__first != __last) + { + const size_type __n = std::distance(__first, __last); + if (size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_finish) >= __n) + { + const size_type __elems_after = end() - __position; + pointer __old_finish(this->_M_impl._M_finish); + if (__elems_after > __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; + std::move_backward(__position.base(), __old_finish - __n, __old_finish) + ; + std::copy(__first, __last, __position); + } + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, __elems_after); + std::__uninitialized_copy_a(__mid, __last, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish += __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; + std::copy(__first, __mid, __position); + } + } + else + { + const size_type __len = + _M_check_len(__n, "vector::_M_range_insert"); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + try + { + __new_finish + = std::__uninitialized_move_if_noexcept_a + (this->_M_impl._M_start, __position.base(), + __new_start, _M_get_Tp_allocator()); + __new_finish + = std::__uninitialized_copy_a(__first, __last, + __new_finish, + _M_get_Tp_allocator()); + __new_finish + = std::__uninitialized_move_if_noexcept_a + (__position.base(), this->_M_impl._M_finish, + __new_finish, _M_get_Tp_allocator()); + } + catch(...) + { + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + throw; + } + 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_end_of_storage = __new_start + __len; + } + } + } + + + + template<typename _Alloc> + void + vector<bool, _Alloc>:: + _M_reallocate(size_type __n) + { + _Bit_pointer __q = this->_M_allocate(__n); + iterator __start(std::__addressof(*__q), 0); + this->_M_impl._M_finish = _M_copy_aligned(begin(), end(), __start); + this->_M_deallocate(); + this->_M_impl._M_start = __start; + this->_M_impl._M_end_of_storage = __q + _S_nword(__n); + } + + template<typename _Alloc> + void + vector<bool, _Alloc>:: + _M_fill_insert(iterator __position, size_type __n, bool __x) + { + if (__n == 0) + return; + if (capacity() - size() >= __n) + { + std::copy_backward(__position, end(), + this->_M_impl._M_finish + difference_type(__n)); + std::fill(__position, __position + difference_type(__n), __x); + this->_M_impl._M_finish += difference_type(__n); + } + else + { + const size_type __len = + _M_check_len(__n, "vector<bool>::_M_fill_insert"); + _Bit_pointer __q = this->_M_allocate(__len); + iterator __start(std::__addressof(*__q), 0); + iterator __i = _M_copy_aligned(begin(), __position, __start); + std::fill(__i, __i + difference_type(__n), __x); + this->_M_impl._M_finish = std::copy(__position, end(), + __i + difference_type(__n)); + this->_M_deallocate(); + this->_M_impl._M_end_of_storage = __q + _S_nword(__len); + this->_M_impl._M_start = __start; + } + } + + template<typename _Alloc> + template<typename _ForwardIterator> + void + vector<bool, _Alloc>:: + _M_insert_range(iterator __position, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag) + { + if (__first != __last) + { + size_type __n = std::distance(__first, __last); + if (capacity() - size() >= __n) + { + std::copy_backward(__position, end(), + this->_M_impl._M_finish + + difference_type(__n)); + std::copy(__first, __last, __position); + this->_M_impl._M_finish += difference_type(__n); + } + else + { + const size_type __len = + _M_check_len(__n, "vector<bool>::_M_insert_range"); + _Bit_pointer __q = this->_M_allocate(__len); + iterator __start(std::__addressof(*__q), 0); + iterator __i = _M_copy_aligned(begin(), __position, __start); + __i = std::copy(__first, __last, __i); + this->_M_impl._M_finish = std::copy(__position, end(), __i); + this->_M_deallocate(); + this->_M_impl._M_end_of_storage = __q + _S_nword(__len); + this->_M_impl._M_start = __start; + } + } + } + + template<typename _Alloc> + void + vector<bool, _Alloc>:: + _M_insert_aux(iterator __position, bool __x) + { + if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) + { + std::copy_backward(__position, this->_M_impl._M_finish, + this->_M_impl._M_finish + 1); + *__position = __x; + ++this->_M_impl._M_finish; + } + else + { + const size_type __len = + _M_check_len(size_type(1), "vector<bool>::_M_insert_aux"); + _Bit_pointer __q = this->_M_allocate(__len); + iterator __start(std::__addressof(*__q), 0); + iterator __i = _M_copy_aligned(begin(), __position, __start); + *__i++ = __x; + this->_M_impl._M_finish = std::copy(__position, end(), __i); + this->_M_deallocate(); + this->_M_impl._M_end_of_storage = __q + _S_nword(__len); + this->_M_impl._M_start = __start; + } + } + + template<typename _Alloc> + typename vector<bool, _Alloc>::iterator + vector<bool, _Alloc>:: + _M_erase(iterator __position) + { + if (__position + 1 != end()) + std::copy(__position + 1, end(), __position); + --this->_M_impl._M_finish; + return __position; + } + + template<typename _Alloc> + typename vector<bool, _Alloc>::iterator + vector<bool, _Alloc>:: + _M_erase(iterator __first, iterator __last) + { + if (__first != __last) + _M_erase_at_end(std::copy(__last, end(), __first)); + return __first; + } + + + template<typename _Alloc> + bool + vector<bool, _Alloc>:: + _M_shrink_to_fit() + { + if (capacity() - size() < int(_S_word_bit)) + return false; + try + { + _M_reallocate(size()); + return true; + } + catch(...) + { return false; } + } + + + +} + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Alloc> + size_t + hash<std::vector<bool, _Alloc>>:: + operator()(const std::vector<bool, _Alloc>& __b) const noexcept + { + size_t __hash = 0; + using std::_S_word_bit; + using std::_Bit_type; + + const size_t __words = __b.size() / _S_word_bit; + if (__words) + { + const size_t __clength = __words * sizeof(_Bit_type); + __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); + } + + const size_t __extrabits = __b.size() % _S_word_bit; + if (__extrabits) + { + _Bit_type __hiword = *__b._M_impl._M_finish._M_p; + __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); + + const size_t __clength + = (__extrabits + 8 - 1) / 8; + if (__words) + __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); + else + __hash = std::_Hash_impl::hash(&__hiword, __clength); + } + + return __hash; + } + + +} +# 70 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/vector" 2 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 55 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, size_t __bits, + typename _UniformRandomNumberGenerator> + _RealType + generate_canonical(_UniformRandomNumberGenerator& __g); + + + + + + + namespace __detail + { + + + template<typename _UIntType, size_t __w, + bool = __w < static_cast<size_t> + (std::numeric_limits<_UIntType>::digits)> + struct _Shift + { static const _UIntType __value = 0; }; + + template<typename _UIntType, size_t __w> + struct _Shift<_UIntType, __w, true> + { static const _UIntType __value = _UIntType(1) << __w; }; + + template<int __s, + int __which = ((__s <= 8 * sizeof (int)) + + (__s <= 8 * sizeof (long)) + + (__s <= 8 * sizeof (long long)) + + + (__s <= 128))> + struct _Select_uint_least_t + { + static_assert(__which < 0, + "sorry, would be too much trouble for a slow result"); + }; + + template<int __s> + struct _Select_uint_least_t<__s, 4> + { typedef unsigned int type; }; + + template<int __s> + struct _Select_uint_least_t<__s, 3> + { typedef unsigned long type; }; + + template<int __s> + struct _Select_uint_least_t<__s, 2> + { typedef unsigned long long type; }; + + + template<int __s> + struct _Select_uint_least_t<__s, 1> + { typedef unsigned __int128 type; }; + + + + template<typename _Tp, _Tp __m, _Tp __a, _Tp __c, + bool __big_enough = (!(__m & (__m - 1)) + || (_Tp(-1) - __c) / __a >= __m - 1), + bool __schrage_ok = __m % __a < __m / __a> + struct _Mod + { + typedef typename _Select_uint_least_t<std::__lg(__a) + + std::__lg(__m) + 2>::type _Tp2; + static _Tp + __calc(_Tp __x) + { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } + }; + + + template<typename _Tp, _Tp __m, _Tp __a, _Tp __c> + struct _Mod<_Tp, __m, __a, __c, false, true> + { + static _Tp + __calc(_Tp __x); + }; + + + + + template<typename _Tp, _Tp __m, _Tp __a, _Tp __c, bool __s> + 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<typename _Tp, _Tp __m, _Tp __a = 1, _Tp __c = 0> + inline _Tp + __mod(_Tp __x) + { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } + + + template<typename _Tp> + inline bool + _Power_of_2(_Tp __x) + { + return ((__x - 1) & __x) == 0; + }; + + + + + + template<typename _Engine, typename _DInputType> + struct _Adaptor + { + static_assert(std::is_floating_point<_DInputType>::value, + "template argument not a floating point type"); + + public: + _Adaptor(_Engine& __g) + : _M_g(__g) { } + + _DInputType + min() const + { return _DInputType(0); } + + _DInputType + max() const + { return _DInputType(1); } + + + + + + + _DInputType + operator()() + { + return std::generate_canonical<_DInputType, + std::numeric_limits<_DInputType>::digits, + _Engine>(_M_g); + } + + private: + _Engine& _M_g; + }; + + + } + + +# 242 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + class linear_congruential_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + static_assert(__m == 0u || (__a < __m && __c < __m), + "template argument substituting __m out of bounds"); + + public: + + typedef _UIntType result_type; + + + static constexpr result_type multiplier = __a; + + static constexpr result_type increment = __c; + + static constexpr result_type modulus = __m; + static constexpr result_type default_seed = 1u; +# 269 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + explicit + linear_congruential_engine(result_type __s = default_seed) + { seed(__s); } + + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, linear_congruential_engine>::value> + ::type> + explicit + linear_congruential_engine(_Sseq& __q) + { seed(__q); } + + + + + + + + void + seed(result_type __s = default_seed); +# 302 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::value>::type + seed(_Sseq& __q); + + + + + + + + static constexpr result_type + min() + { return __c == 0u ? 1u : 0u; } + + + + + static constexpr result_type + max() + { return __m - 1u; } + + + + + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + + + + result_type + operator()() + { + _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); + return _M_x; + } +# 354 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + friend bool + operator==(const linear_congruential_engine& __lhs, + const linear_congruential_engine& __rhs) + { return __lhs._M_x == __rhs._M_x; } +# 367 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1, + _UIntType1 __m1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::linear_congruential_engine<_UIntType1, + __a1, __c1, __m1>& __lcr); +# 387 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1, + _UIntType1 __m1, typename _CharT, typename _Traits> + 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; + }; +# 409 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + 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); } +# 446 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, + _UIntType __c, size_t __l, _UIntType __f> + class mersenne_twister_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not 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: + + typedef _UIntType result_type; + + + 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; + + + explicit + mersenne_twister_engine(result_type __sd = default_seed) + { seed(__sd); } + + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, mersenne_twister_engine>::value> + ::type> + explicit + mersenne_twister_engine(_Sseq& __q) + { seed(__q); } + + void + seed(result_type __sd = default_seed); + + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::value>::type + seed(_Sseq& __q); + + + + + static constexpr result_type + min() + { return 0; }; + + + + + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + + + + void + discard(unsigned long long __z); + + result_type + operator()(); +# 560 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + 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); } +# 578 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, + size_t __w1, size_t __n1, + size_t __m1, size_t __r1, + _UIntType1 __a1, size_t __u1, + _UIntType1 __d1, size_t __s1, + _UIntType1 __b1, size_t __t1, + _UIntType1 __c1, size_t __l1, _UIntType1 __f1, + typename _CharT, typename _Traits> + 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); +# 604 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, + size_t __w1, size_t __n1, + size_t __m1, size_t __r1, + _UIntType1 __a1, size_t __u1, + _UIntType1 __d1, size_t __s1, + _UIntType1 __b1, size_t __t1, + _UIntType1 __c1, size_t __l1, _UIntType1 __f1, + typename _CharT, typename _Traits> + 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; + }; +# 637 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, + _UIntType __c, size_t __l, _UIntType __f> + 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); } +# 665 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + class subtract_with_carry_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + static_assert(0u < __s && __s < __r, + "template argument substituting __s out of bounds"); + static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, + "template argument substituting __w out of bounds"); + + public: + + typedef _UIntType result_type; + + + 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; + + + + + + explicit + subtract_with_carry_engine(result_type __sd = default_seed) + { seed(__sd); } + + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, subtract_with_carry_engine>::value> + ::type> + explicit + subtract_with_carry_engine(_Sseq& __q) + { seed(__q); } +# 718 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + void + seed(result_type __sd = default_seed); + + + + + + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::value>::type + seed(_Sseq& __q); + + + + + + static constexpr result_type + min() + { return 0; } + + + + + + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + + + + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + + + + result_type + operator()(); +# 773 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + 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); } +# 792 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, size_t __w1, size_t __s1, size_t __r1, + typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>& __x); +# 811 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType1, size_t __w1, size_t __s1, size_t __r1, + typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>& __x); + + private: + + _UIntType _M_x[long_lag]; + _UIntType _M_carry; + size_t _M_p; + }; +# 837 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + 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); } +# 852 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine, size_t __p, size_t __r> + class discard_block_engine + { + static_assert(1 <= __r && __r <= __p, + "template argument substituting __r out of bounds"); + + public: + + typedef typename _RandomNumberEngine::result_type result_type; + + + static constexpr size_t block_size = __p; + static constexpr size_t used_block = __r; + + + + + + + discard_block_engine() + : _M_b(), _M_n(0) { } + + + + + + + + explicit + discard_block_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng), _M_n(0) { } + + + + + + + + explicit + discard_block_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)), _M_n(0) { } + + + + + + + + explicit + discard_block_engine(result_type __s) + : _M_b(__s), _M_n(0) { } + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, discard_block_engine>::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + discard_block_engine(_Sseq& __q) + : _M_b(__q), _M_n(0) + { } + + + + + + void + seed() + { + _M_b.seed(); + _M_n = 0; + } + + + + + + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_n = 0; + } + + + + + + + template<typename _Sseq> + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_n = 0; + } + + + + + + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + + + + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + + + + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + + + + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + + + + result_type + operator()(); +# 1002 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + 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; } +# 1018 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine1, size_t __p1, size_t __r1, + typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discard_block_engine<_RandomNumberEngine1, + __p1, __r1>& __x); +# 1036 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine1, size_t __p1, size_t __r1, + typename _CharT, typename _Traits> + 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; + }; +# 1059 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine, size_t __p, size_t __r> + inline bool + operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __lhs, + const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __rhs) + { return !(__lhs == __rhs); } + + + + + + + template<typename _RandomNumberEngine, size_t __w, typename _UIntType> + class independent_bits_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, + "template argument substituting __w out of bounds"); + + public: + + typedef _UIntType result_type; + + + + + + + independent_bits_engine() + : _M_b() { } + + + + + + + + explicit + independent_bits_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) { } + + + + + + + + explicit + independent_bits_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) { } + + + + + + + + explicit + independent_bits_engine(result_type __s) + : _M_b(__s) { } + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, independent_bits_engine>::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + independent_bits_engine(_Sseq& __q) + : _M_b(__q) + { } + + + + + + void + seed() + { _M_b.seed(); } + + + + + + void + seed(result_type __s) + { _M_b.seed(__s); } + + + + + + + template<typename _Sseq> + void + seed(_Sseq& __q) + { _M_b.seed(__q); } + + + + + + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + + + + static constexpr result_type + min() + { return 0U; } + + + + + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + + + + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + + + + result_type + operator()(); +# 1212 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + friend bool + operator==(const independent_bits_engine& __lhs, + const independent_bits_engine& __rhs) + { return __lhs._M_b == __rhs._M_b; } +# 1229 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _CharT, typename _Traits> + 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; + }; +# 1255 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine, size_t __w, typename _UIntType> + inline bool + operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __lhs, + const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __rhs) + { return !(__lhs == __rhs); } +# 1273 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine, size_t __w, typename _UIntType, + typename _CharT, typename _Traits> + 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; + } + + + + + + + + template<typename _RandomNumberEngine, size_t __k> + class shuffle_order_engine + { + static_assert(1u <= __k, "template argument substituting " + "__k out of bound"); + + public: + + typedef typename _RandomNumberEngine::result_type result_type; + + static constexpr size_t table_size = __k; + + + + + + + shuffle_order_engine() + : _M_b() + { _M_initialize(); } + + + + + + + + explicit + shuffle_order_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) + { _M_initialize(); } + + + + + + + + explicit + shuffle_order_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) + { _M_initialize(); } + + + + + + + + explicit + shuffle_order_engine(result_type __s) + : _M_b(__s) + { _M_initialize(); } + + + + + + + template<typename _Sseq, typename = typename + std::enable_if<!std::is_same<_Sseq, shuffle_order_engine>::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + shuffle_order_engine(_Sseq& __q) + : _M_b(__q) + { _M_initialize(); } + + + + + + void + seed() + { + _M_b.seed(); + _M_initialize(); + } + + + + + + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_initialize(); + } + + + + + + + template<typename _Sseq> + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_initialize(); + } + + + + + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + + + + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + + + + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + + + + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + + + + result_type + operator()(); +# 1441 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + 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); } +# 1459 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine1, size_t __k1, + typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::shuffle_order_engine<_RandomNumberEngine1, + __k1>& __x); +# 1477 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine1, size_t __k1, + typename _CharT, typename _Traits> + 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; + }; +# 1507 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RandomNumberEngine, size_t __k> + inline bool + operator!=(const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __lhs, + const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __rhs) + { return !(__lhs == __rhs); } + + + + + + typedef linear_congruential_engine<uint_fast32_t, 16807UL, 0UL, 2147483647UL> + minstd_rand0; + + + + + typedef linear_congruential_engine<uint_fast32_t, 48271UL, 0UL, 2147483647UL> + minstd_rand; +# 1536 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + typedef mersenne_twister_engine< + uint_fast32_t, + 32, 624, 397, 31, + 0x9908b0dfUL, 11, + 0xffffffffUL, 7, + 0x9d2c5680UL, 15, + 0xefc60000UL, 18, 1812433253UL> mt19937; + + + + + 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<uint_fast32_t, 24, 10, 24> + ranlux24_base; + + typedef subtract_with_carry_engine<uint_fast64_t, 48, 5, 12> + ranlux48_base; + + typedef discard_block_engine<ranlux24_base, 223, 23> ranlux24; + + typedef discard_block_engine<ranlux48_base, 389, 11> ranlux48; + + typedef shuffle_order_engine<minstd_rand0, 256> knuth_b; + + typedef minstd_rand0 default_random_engine; + + + + + + class random_device + { + public: + + typedef unsigned int result_type; + + + + + + explicit + random_device(const std::string& __token = "default") + { + _M_init(__token); + } + + ~random_device() + { _M_fini(); } +# 1603 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + static constexpr result_type + min() + { return std::numeric_limits<result_type>::min(); } + + static constexpr result_type + max() + { return std::numeric_limits<result_type>::max(); } + + double + entropy() const noexcept + { return 0.0; } + + result_type + operator()() + { + + return this->_M_getval(); + + + + } + + + 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; + }; + }; +# 1664 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class uniform_int_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_type; + + struct param_type + { + typedef uniform_int_distribution<_IntType> distribution_type; + + explicit + param_type(_IntType __a = 0, + _IntType __b = std::numeric_limits<_IntType>::max()) + : _M_a(__a), _M_b(__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; } + + private: + _IntType _M_a; + _IntType _M_b; + }; + + public: + + + + explicit + uniform_int_distribution(_IntType __a = 0, + _IntType __b = std::numeric_limits<_IntType>::max()) + : _M_param(__a, __b) + { } + + explicit + uniform_int_distribution(const param_type& __p) + : _M_param(__p) + { } + + + + + + + void + reset() { } + + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return this->a(); } + + + + + result_type + max() const + { return this->b(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const uniform_int_distribution& __d1, + const uniform_int_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _IntType> + inline bool + operator!=(const std::uniform_int_distribution<_IntType>& __d1, + const std::uniform_int_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 1838 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_int_distribution<_IntType>&); +# 1852 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_int_distribution<_IntType>&); +# 1865 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class uniform_real_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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) + { + ; + } + + 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; } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + public: + + + + + + + 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) + { } + + + + + + + void + reset() { } + + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return this->a(); } + + + + + result_type + max() const + { return this->b(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + 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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const uniform_real_distribution& __d1, + const uniform_real_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _IntType> + inline bool + operator!=(const std::uniform_real_distribution<_IntType>& __d1, + const std::uniform_real_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 2047 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_real_distribution<_RealType>&); +# 2061 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_real_distribution<_RealType>&); +# 2083 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class normal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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) + { + ; + } + + _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); } + + private: + _RealType _M_mean; + _RealType _M_stddev; + }; + + public: + + + + + 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) + { } + + + + + void + reset() + { _M_saved_available = false; } + + + + + _RealType + mean() const + { return _M_param.mean(); } + + + + + _RealType + stddev() const + { return _M_param.stddev(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return std::numeric_limits<result_type>::lowest(); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + template<typename _RealType1> + friend bool + operator==(const std::normal_distribution<_RealType1>& __d1, + const std::normal_distribution<_RealType1>& __d2); +# 2244 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::normal_distribution<_RealType1>& __x); +# 2259 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::normal_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + 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; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::normal_distribution<_RealType>& __d1, + const std::normal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 2296 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class lognormal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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() + { } + + + + + void + reset() + { _M_nd.reset(); } + + + + + _RealType + m() const + { return _M_param.m(); } + + _RealType + s() const + { return _M_param.s(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + friend bool + operator==(const lognormal_distribution& __d1, + const lognormal_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } +# 2448 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::lognormal_distribution<_RealType1>& __x); +# 2463 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::lognormal_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution<result_type> _M_nd; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::lognormal_distribution<_RealType>& __d1, + const std::lognormal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 2500 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class gamma_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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) + { + ; + _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); } + + private: + void + _M_initialize(); + + _RealType _M_alpha; + _RealType _M_beta; + + _RealType _M_malpha, _M_a2; + }; + + public: + + + + + 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() + { } + + + + + void + reset() + { _M_nd.reset(); } + + + + + _RealType + alpha() const + { return _M_param.alpha(); } + + + + + _RealType + beta() const + { return _M_param.beta(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + friend bool + operator==(const gamma_distribution& __d1, + const gamma_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } +# 2669 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::gamma_distribution<_RealType1>& __x); +# 2683 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::gamma_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution<result_type> _M_nd; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::gamma_distribution<_RealType>& __d1, + const std::gamma_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 2717 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class chi_squared_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { _M_gd.reset(); } + + + + + _RealType + n() const + { return _M_param.n(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return 2 * _M_gd(__urng); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution<result_type>::param_type + param_type; + return 2 * _M_gd(__urng, param_type(__p.n() / 2)); + } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution<result_type>::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution<result_type>::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + + + + + + 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; } +# 2871 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::chi_squared_distribution<_RealType1>& __x); +# 2886 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::chi_squared_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution<result_type>::param_type& __p); + + param_type _M_param; + + std::gamma_distribution<result_type> _M_gd; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::chi_squared_distribution<_RealType>& __d1, + const std::chi_squared_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 2927 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class cauchy_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { } + + + + + _RealType + a() const + { return _M_param.a(); } + + _RealType + b() const + { return _M_param.b(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return std::numeric_limits<result_type>::lowest(); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const cauchy_distribution& __d1, + const cauchy_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::cauchy_distribution<_RealType>& __d1, + const std::cauchy_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 3097 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::cauchy_distribution<_RealType>& __x); +# 3112 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::cauchy_distribution<_RealType>& __x); +# 3128 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class fisher_f_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { + _M_gd_x.reset(); + _M_gd_y.reset(); + } + + + + + _RealType + m() const + { return _M_param.m(); } + + _RealType + n() const + { return _M_param.n(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution<result_type>::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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + 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); } +# 3295 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::fisher_f_distribution<_RealType1>& __x); +# 3310 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::fisher_f_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution<result_type> _M_gd_x, _M_gd_y; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::fisher_f_distribution<_RealType>& __d1, + const std::fisher_f_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 3352 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class student_t_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { + _M_nd.reset(); + _M_gd.reset(); + } + + + + + _RealType + n() const + { return _M_param.n(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return std::numeric_limits<result_type>::lowest(); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution<result_type>::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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + 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); } +# 3508 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::student_t_distribution<_RealType1>& __x); +# 3523 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::student_t_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution<result_type> _M_nd; + std::gamma_distribution<result_type> _M_gd; + }; + + + + + template<typename _RealType> + inline bool + operator!=(const std::student_t_distribution<_RealType>& __d1, + const std::student_t_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 3571 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + class bernoulli_distribution + { + public: + + typedef bool result_type; + + struct param_type + { + typedef bernoulli_distribution distribution_type; + + explicit + param_type(double __p = 0.5) + : _M_p(__p) + { + ; + } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_p == __p2._M_p; } + + private: + double _M_p; + }; + + public: + + + + + + + explicit + bernoulli_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + bernoulli_distribution(const param_type& __p) + : _M_param(__p) + { } + + + + + + + void + reset() { } + + + + + double + p() const + { return _M_param.p(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return std::numeric_limits<result_type>::min(); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + 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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const bernoulli_distribution& __d1, + const bernoulli_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + inline bool + operator!=(const std::bernoulli_distribution& __d1, + const std::bernoulli_distribution& __d2) + { return !(__d1 == __d2); } +# 3742 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::bernoulli_distribution& __x); +# 3756 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _CharT, typename _Traits> + 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; + } +# 3775 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_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) + { + + + ; + _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; } + + private: + void + _M_initialize(); + + _IntType _M_t; + double _M_p; + + double _M_q; + + double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, + _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; + + bool _M_easy; + }; + + + 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() + { } + + + + + void + reset() + { _M_nd.reset(); } + + + + + _IntType + t() const + { return _M_param.t(); } + + + + + double + p() const + { return _M_param.p(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return 0; } + + + + + result_type + max() const + { return _M_param.t(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + friend bool + operator==(const binomial_distribution& __d1, + const binomial_distribution& __d2) + + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +# 3948 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, + typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::binomial_distribution<_IntType1>& __x); +# 3964 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, + typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::binomial_distribution<_IntType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _UniformRandomNumberGenerator> + result_type + _M_waiting(_UniformRandomNumberGenerator& __urng, + _IntType __t, double __q); + + param_type _M_param; + + + std::normal_distribution<double> _M_nd; + }; + + + + + template<typename _IntType> + inline bool + operator!=(const std::binomial_distribution<_IntType>& __d1, + const std::binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 4006 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class geometric_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_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) + { + ; + _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; } + + private: + void + _M_initialize() + { _M_log_1_p = std::log(1.0 - _M_p); } + + double _M_p; + + double _M_log_1_p; + }; + + + explicit + geometric_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + geometric_distribution(const param_type& __p) + : _M_param(__p) + { } + + + + + + + void + reset() { } + + + + + double + p() const + { return _M_param.p(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return 0; } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const geometric_distribution& __d1, + const geometric_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _IntType> + inline bool + operator!=(const std::geometric_distribution<_IntType>& __d1, + const std::geometric_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 4177 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType, + typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::geometric_distribution<_IntType>& __x); +# 4192 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType, + typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::geometric_distribution<_IntType>& __x); +# 4206 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class negative_binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_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) + { + ; + } + + _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; } + + 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()) + { } + + + + + void + reset() + { _M_gd.reset(); } + + + + + _IntType + k() const + { return _M_param.k(); } + + + + + double + p() const + { return _M_param.p(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + 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; } +# 4365 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::negative_binomial_distribution<_IntType1>& __x); +# 4380 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::negative_binomial_distribution<_IntType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution<double> _M_gd; + }; + + + + + template<typename _IntType> + inline bool + operator!=(const std::negative_binomial_distribution<_IntType>& __d1, + const std::negative_binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 4428 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class poisson_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_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) + { + ; + _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; } + + private: + + void + _M_initialize(); + + double _M_mean; + + double _M_lm_thr; + + double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; + + }; + + + explicit + poisson_distribution(double __mean = 1.0) + : _M_param(__mean), _M_nd() + { } + + explicit + poisson_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + + + + void + reset() + { _M_nd.reset(); } + + + + + double + mean() const + { return _M_param.mean(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return 0; } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + + friend bool + operator==(const poisson_distribution& __d1, + const poisson_distribution& __d2) + + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +# 4585 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::poisson_distribution<_IntType1>& __x); +# 4600 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::poisson_distribution<_IntType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + + std::normal_distribution<double> _M_nd; + }; + + + + + template<typename _IntType> + inline bool + operator!=(const std::poisson_distribution<_IntType>& __d1, + const std::poisson_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 4644 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class exponential_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_type; + + struct param_type + { + typedef exponential_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __lambda = _RealType(1)) + : _M_lambda(__lambda) + { + ; + } + + _RealType + lambda() const + { return _M_lambda; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_lambda == __p2._M_lambda; } + + private: + _RealType _M_lambda; + }; + + public: + + + + + explicit + exponential_distribution(const result_type& __lambda = result_type(1)) + : _M_param(__lambda) + { } + + explicit + exponential_distribution(const param_type& __p) + : _M_param(__p) + { } + + + + + + + void + reset() { } + + + + + _RealType + lambda() const + { return _M_param.lambda(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + 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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const exponential_distribution& __d1, + const exponential_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::exponential_distribution<_RealType>& __d1, + const std::exponential_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 4816 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::exponential_distribution<_RealType>& __x); +# 4831 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::exponential_distribution<_RealType>& __x); +# 4846 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class weibull_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { } + + + + + _RealType + a() const + { return _M_param.a(); } + + + + + _RealType + b() const + { return _M_param.b(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const weibull_distribution& __d1, + const weibull_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::weibull_distribution<_RealType>& __d1, + const std::weibull_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 5019 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::weibull_distribution<_RealType>& __x); +# 5034 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::weibull_distribution<_RealType>& __x); +# 5049 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class extreme_value_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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; } + + 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) + { } + + + + + void + reset() + { } + + + + + _RealType + a() const + { return _M_param.a(); } + + + + + _RealType + b() const + { return _M_param.b(); } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return std::numeric_limits<result_type>::lowest(); } + + + + + result_type + max() const + { return std::numeric_limits<result_type>::max(); } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const extreme_value_distribution& __d1, + const extreme_value_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::extreme_value_distribution<_RealType>& __d1, + const std::extreme_value_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 5222 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::extreme_value_distribution<_RealType>& __x); +# 5237 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType, typename _CharT, typename _Traits> + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::extreme_value_distribution<_RealType>& __x); +# 5249 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType = int> + class discrete_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + + typedef _IntType result_type; + + struct param_type + { + typedef discrete_distribution<_IntType> distribution_type; + friend class discrete_distribution<_IntType>; + + param_type() + : _M_prob(), _M_cp() + { } + + template<typename _InputIterator> + param_type(_InputIterator __wbegin, + _InputIterator __wend) + : _M_prob(__wbegin, __wend), _M_cp() + { _M_initialize(); } + + param_type(initializer_list<double> __wil) + : _M_prob(__wil.begin(), __wil.end()), _M_cp() + { _M_initialize(); } + + template<typename _Func> + param_type(size_t __nw, double __xmin, double __xmax, + _Func __fw); + + + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector<double> + probabilities() const + { return _M_prob.empty() ? std::vector<double>(1, 1.0) : _M_prob; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_prob == __p2._M_prob; } + + private: + void + _M_initialize(); + + std::vector<double> _M_prob; + std::vector<double> _M_cp; + }; + + discrete_distribution() + : _M_param() + { } + + template<typename _InputIterator> + discrete_distribution(_InputIterator __wbegin, + _InputIterator __wend) + : _M_param(__wbegin, __wend) + { } + + discrete_distribution(initializer_list<double> __wl) + : _M_param(__wl) + { } + + template<typename _Func> + 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) + { } + + + + + void + reset() + { } + + + + + std::vector<double> + probabilities() const + { + return _M_param._M_prob.empty() + ? std::vector<double>(1, 1.0) : _M_param._M_prob; + } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { return result_type(0); } + + + + + result_type + max() const + { + return _M_param._M_prob.empty() + ? result_type(0) : result_type(_M_param._M_prob.size() - 1); + } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const discrete_distribution& __d1, + const discrete_distribution& __d2) + { return __d1._M_param == __d2._M_param; } +# 5430 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discrete_distribution<_IntType1>& __x); +# 5446 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _IntType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::discrete_distribution<_IntType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _IntType> + inline bool + operator!=(const std::discrete_distribution<_IntType>& __d1, + const std::discrete_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } +# 5479 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class piecewise_constant_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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<typename _InputIteratorB, typename _InputIteratorW> + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template<typename _Func> + param_type(initializer_list<_RealType> __bi, _Func __fw); + + template<typename _Func> + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + + 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<double> + densities() const + { return _M_den.empty() ? std::vector<double>(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; } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector<double> _M_den; + std::vector<double> _M_cp; + }; + + explicit + piecewise_constant_distribution() + : _M_param() + { } + + template<typename _InputIteratorB, typename _InputIteratorW> + piecewise_constant_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template<typename _Func> + piecewise_constant_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template<typename _Func> + 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) + { } + + + + + void + reset() + { } + + + + + 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; + } + + + + + std::vector<double> + densities() const + { + return _M_param._M_den.empty() + ? std::vector<double>(1, 1.0) : _M_param._M_den; + } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + + + + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const piecewise_constant_distribution& __d1, + const piecewise_constant_distribution& __d2) + { return __d1._M_param == __d2._M_param; } +# 5697 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_constant_distribution<_RealType1>& __x); +# 5713 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_constant_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, + const std::piecewise_constant_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 5746 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType = double> + class piecewise_linear_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + + typedef _RealType result_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<typename _InputIteratorB, typename _InputIteratorW> + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template<typename _Func> + param_type(initializer_list<_RealType> __bl, _Func __fw); + + template<typename _Func> + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + + 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<double> + densities() const + { return _M_den.empty() ? std::vector<double>(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); } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector<double> _M_den; + std::vector<double> _M_cp; + std::vector<double> _M_m; + }; + + explicit + piecewise_linear_distribution() + : _M_param() + { } + + template<typename _InputIteratorB, typename _InputIteratorW> + piecewise_linear_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template<typename _Func> + piecewise_linear_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template<typename _Func> + 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) + { } + + + + + void + reset() + { } + + + + + 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; + } + + + + + + std::vector<double> + densities() const + { + return _M_param._M_den.empty() + ? std::vector<double>(2, 1.0) : _M_param._M_den; + } + + + + + param_type + param() const + { return _M_param; } + + + + + + void + param(const param_type& __param) + { _M_param = __param; } + + + + + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + + + + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + + + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template<typename _UniformRandomNumberGenerator> + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template<typename _UniformRandomNumberGenerator> + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + + + + + friend bool + operator==(const piecewise_linear_distribution& __d1, + const piecewise_linear_distribution& __d2) + { return __d1._M_param == __d2._M_param; } +# 5967 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_linear_distribution<_RealType1>& __x); +# 5983 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + template<typename _RealType1, typename _CharT, typename _Traits> + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_linear_distribution<_RealType1>& __x); + + private: + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + + + + + template<typename _RealType> + inline bool + operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, + const std::piecewise_linear_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } +# 6024 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.h" 3 + class seed_seq + { + + public: + + typedef uint_least32_t result_type; + + + seed_seq() + : _M_v() + { } + + template<typename _IntType> + seed_seq(std::initializer_list<_IntType> il); + + template<typename _InputIterator> + seed_seq(_InputIterator __begin, _InputIterator __end); + + + template<typename _RandomAccessIterator> + void + generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); + + + size_t size() const + { return _M_v.size(); } + + template<typename OutputIterator> + void + param(OutputIterator __dest) const + { std::copy(_M_v.begin(), _M_v.end(), __dest); } + + private: + + std::vector<result_type> _M_v; + }; + + + + + + +} +# 50 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/opt_random.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/opt_random.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/opt_random.h" 3 +# 51 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/numeric" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/numeric" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/numeric" 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 1 3 +# 65 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 80 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _ForwardIterator, typename _Tp> + void + iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) + { + + + + + + ; + + for (; __first != __last; ++__first) + { + *__first = __value; + ++__value; + } + } + + +} + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 118 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _Tp> + inline _Tp + accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) + { + + + ; + + for (; __first != __last; ++__first) + __init = __init + *__first; + return __init; + } +# 144 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _Tp, typename _BinaryOperation> + inline _Tp + accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, + _BinaryOperation __binary_op) + { + + + ; + + for (; __first != __last; ++__first) + __init = __binary_op(__init, *__first); + return __init; + } +# 172 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator1, typename _InputIterator2, typename _Tp> + inline _Tp + inner_product(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _Tp __init) + { + + + + ; + + for (; __first1 != __last1; ++__first1, ++__first2) + __init = __init + (*__first1 * *__first2); + return __init; + } +# 203 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator1, typename _InputIterator2, typename _Tp, + typename _BinaryOperation1, typename _BinaryOperation2> + inline _Tp + inner_product(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _Tp __init, + _BinaryOperation1 __binary_op1, + _BinaryOperation2 __binary_op2) + { + + + + ; + + for (; __first1 != __last1; ++__first1, ++__first2) + __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); + return __init; + } +# 235 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _OutputIterator> + _OutputIterator + partial_sum(_InputIterator __first, _InputIterator __last, + _OutputIterator __result) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + + + + + ; + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + __value = __value + *__first; + *++__result = __value; + } + return ++__result; + } +# 275 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _BinaryOperation> + _OutputIterator + partial_sum(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryOperation __binary_op) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + + + + + ; + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + __value = __binary_op(__value, *__first); + *++__result = __value; + } + return ++__result; + } +# 315 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _OutputIterator> + _OutputIterator + adjacent_difference(_InputIterator __first, + _InputIterator __last, _OutputIterator __result) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + + + + + ; + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + _ValueType __tmp = *__first; + *++__result = __tmp - __value; + __value = std::move(__tmp); + } + return ++__result; + } +# 357 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_numeric.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _BinaryOperation> + _OutputIterator + adjacent_difference(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryOperation __binary_op) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + + + + + ; + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + _ValueType __tmp = *__first; + *++__result = __binary_op(__tmp, __value); + __value = std::move(__tmp); + } + return ++__result; + } + + +} +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/numeric" 2 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + namespace __detail + { + + + + + + + + + template<typename _Tp, _Tp __m, _Tp __a, _Tp __c> + _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<typename _InputIterator, typename _OutputIterator, + typename _Tp> + _OutputIterator + __normalize(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, const _Tp& __factor) + { + for (; __first != __last; ++__first, ++__result) + *__result = *__first / __factor; + return __result; + } + + + } + + + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::increment; + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; + + + + + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + 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); + } + + + + + template<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::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<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m, + typename _CharT, typename _Traits> + 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<typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m, + typename _CharT, typename _Traits> + 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<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::word_size; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::state_size; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::shift_size; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::mask_bits; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::xor_mask; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_u; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_d; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_s; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_b; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_t; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_c; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_l; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + initialization_multiplier; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::default_seed; + + template<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + 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<typename _UIntType, + size_t __w, size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::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<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + 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<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + 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 _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f> + 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()() + { + + if (_M_p >= state_size) + _M_gen_rand(); + + + 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<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f, typename _CharT, typename _Traits> + 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<typename _UIntType, size_t __w, + size_t __n, size_t __m, size_t __r, + _UIntType __a, size_t __u, _UIntType __d, size_t __s, + _UIntType __b, size_t __t, _UIntType __c, size_t __l, + _UIntType __f, typename _CharT, typename _Traits> + 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<typename _UIntType, size_t __w, size_t __s, size_t __r> + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; + + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; + + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; + + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + constexpr _UIntType + subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; + + template<typename _UIntType, size_t __w, size_t __s, size_t __r> + void + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + seed(result_type __value) + { + std::linear_congruential_engine<result_type, 40014u, 0u, 2147483563u> + __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<uint_least32_t, + __detail::_Shift<uint_least32_t, 32>::__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<typename _UIntType, size_t __w, size_t __s, size_t __r> + template<typename _Sseq> + typename std::enable_if<std::is_class<_Sseq>::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 _UIntType, size_t __w, size_t __s, size_t __r> + typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + result_type + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + operator()() + { + + long __ps = _M_p - short_lag; + if (__ps < 0) + __ps += long_lag; + + + + + _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; + + + if (++_M_p >= long_lag) + _M_p = 0; + + return __xi; + } + + template<typename _UIntType, size_t __w, size_t __s, size_t __r, + typename _CharT, typename _Traits> + 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<typename _UIntType, size_t __w, size_t __s, size_t __r, + typename _CharT, typename _Traits> + 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<typename _RandomNumberEngine, size_t __p, size_t __r> + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; + + template<typename _RandomNumberEngine, size_t __p, size_t __r> + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; + + template<typename _RandomNumberEngine, size_t __p, size_t __r> + 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<typename _RandomNumberEngine, size_t __p, size_t __r, + typename _CharT, typename _Traits> + 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<typename _RandomNumberEngine, size_t __p, size_t __r, + typename _CharT, typename _Traits> + 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 _RandomNumberEngine, size_t __w, typename _UIntType> + 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; + + __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<typename _RandomNumberEngine, size_t __k> + constexpr size_t + shuffle_order_engine<_RandomNumberEngine, __k>::table_size; + + template<typename _RandomNumberEngine, size_t __k> + 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<typename _RandomNumberEngine, size_t __k, + typename _CharT, typename _Traits> + 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<typename _RandomNumberEngine, size_t __k, + typename _CharT, typename _Traits> + 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<typename _IntType> + template<typename _UniformRandomNumberGenerator> + typename uniform_int_distribution<_IntType>::result_type + uniform_int_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + typedef typename _UniformRandomNumberGenerator::result_type + _Gresult_type; + typedef typename std::make_unsigned<result_type>::type __utype; + typedef typename std::common_type<_Gresult_type, __utype>::type + __uctype; + + const __uctype __urngmin = __urng.min(); + const __uctype __urngmax = __urng.max(); + const __uctype __urngrange = __urngmax - __urngmin; + const __uctype __urange + = __uctype(__param.b()) - __uctype(__param.a()); + + __uctype __ret; + + if (__urngrange > __urange) + { + + const __uctype __uerange = __urange + 1; + const __uctype __scaling = __urngrange / __uerange; + const __uctype __past = __uerange * __scaling; + do + __ret = __uctype(__urng()) - __urngmin; + while (__ret >= __past); + __ret /= __scaling; + } + else if (__urngrange < __urange) + { +# 924 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 + __uctype __tmp; + do + { + const __uctype __uerngrange = __urngrange + 1; + __tmp = (__uerngrange * operator() + (__urng, param_type(0, __urange / __uerngrange))); + __ret = __tmp + (__uctype(__urng()) - __urngmin); + } + while (__ret > __urange || __ret < __tmp); + } + else + __ret = __uctype(__urng()) - __urngmin; + + return __ret + __param.a(); + } + + + template<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + uniform_int_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + typedef typename _UniformRandomNumberGenerator::result_type + _Gresult_type; + typedef typename std::make_unsigned<result_type>::type __utype; + typedef typename std::common_type<_Gresult_type, __utype>::type + __uctype; + + const __uctype __urngmin = __urng.min(); + const __uctype __urngmax = __urng.max(); + const __uctype __urngrange = __urngmax - __urngmin; + const __uctype __urange + = __uctype(__param.b()) - __uctype(__param.a()); + + __uctype __ret; + + if (__urngrange > __urange) + { + if (__detail::_Power_of_2(__urngrange + 1) + && __detail::_Power_of_2(__urange + 1)) + { + while (__f != __t) + { + __ret = __uctype(__urng()) - __urngmin; + *__f++ = (__ret & __urange) + __param.a(); + } + } + else + { + + const __uctype __uerange = __urange + 1; + const __uctype __scaling = __urngrange / __uerange; + const __uctype __past = __uerange * __scaling; + while (__f != __t) + { + do + __ret = __uctype(__urng()) - __urngmin; + while (__ret >= __past); + *__f++ = __ret / __scaling + __param.a(); + } + } + } + else if (__urngrange < __urange) + { +# 1008 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 + __uctype __tmp; + while (__f != __t) + { + do + { + const __uctype __uerngrange = __urngrange + 1; + __tmp = (__uerngrange * operator() + (__urng, param_type(0, __urange / __uerngrange))); + __ret = __tmp + (__uctype(__urng()) - __urngmin); + } + while (__ret > __urange || __ret < __tmp); + *__f++ = __ret; + } + } + else + while (__f != __t) + *__f++ = __uctype(__urng()) - __urngmin + __param.a(); + } + + template<typename _IntType, typename _CharT, typename _Traits> + 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<typename _IntType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + uniform_real_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + auto __range = __p.b() - __p.a(); + while (__f != __t) + *__f++ = __aurng() * __range + __p.a(); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::bernoulli_distribution:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + auto __limit = __p.p() * (__aurng.max() - __aurng.min()); + + while (__f != __t) + *__f++ = (__aurng() - __aurng.min()) < __limit; + } + + template<typename _CharT, typename _Traits> + 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<double>::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + typename geometric_distribution<_IntType>::result_type + geometric_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + const double __naf = + (1 - std::numeric_limits<double>::epsilon()) / 2; + + 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<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + geometric_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + + const double __naf = + (1 - std::numeric_limits<double>::epsilon()) / 2; + + 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<typename _IntType, + typename _CharT, typename _Traits> + 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<double>::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template<typename _IntType, + typename _CharT, typename _Traits> + 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; + } + + + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + const double __y = _M_gd(__urng); + + + std::poisson_distribution<result_type> __poisson(__y); + return __poisson(__urng); + } + + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution<double>::param_type + param_type; + + const double __y = + _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); + + std::poisson_distribution<result_type> __poisson(__y); + return __poisson(__urng); + } + + template<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + + while (__f != __t) + { + const double __y = _M_gd(__urng); + + + std::poisson_distribution<result_type> __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + typename std::gamma_distribution<result_type>::param_type + __p2(__p.k(), (1.0 - __p.p()) / __p.p()); + + while (__f != __t) + { + const double __y = _M_gd(__urng, __p2); + + std::poisson_distribution<result_type> __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template<typename _IntType, typename _CharT, typename _Traits> + 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<double>::max_digits10); + + __os << __x.k() << __space << __x.p() + << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template<typename _IntType, typename _CharT, typename _Traits> + 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<typename _IntType> + void + poisson_distribution<_IntType>::param_type:: + _M_initialize() + { + + 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 + + _M_lm_thr = std::exp(-_M_mean); + } +# 1432 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + typename poisson_distribution<_IntType>::result_type + poisson_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + if (__param.mean() >= 12) + { + double __x; + + + const double __naf = + (1 - std::numeric_limits<double>::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __m = std::floor(__param.mean()); + + 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; + + 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) + + + __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 + + { + _IntType __x = 0; + double __prod = 1.0; + + do + { + __prod *= __aurng(); + __x += 1; + } + while (__prod > __param._M_lm_thr); + + return __x - 1; + } + } + + template<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + poisson_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template<typename _IntType, + typename _CharT, typename _Traits> + 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<double>::max_digits10); + + __os << __x.mean() << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template<typename _IntType, + typename _CharT, typename _Traits> + 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<typename _IntType> + 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 (_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)); + + + 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 + + _M_q = -std::log(1 - __p12); + } + + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + 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; + } +# 1682 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 + template<typename _IntType> + template<typename _UniformRandomNumberGenerator> + 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 (!__param._M_easy) + { + double __x; + + + const double __naf = + (1 - std::numeric_limits<double>::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __np = std::floor(__t * __p12); + + + 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 + + __ret = _M_waiting(__urng, __t, __param._M_q); + + if (__p12 != __p) + __ret = __t - __ret; + return __ret; + } + + template<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template<typename _IntType, + typename _CharT, typename _Traits> + 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<double>::max_digits10); + + __os << __x.t() << __space << __x.p() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template<typename _IntType, + typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::exponential_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + while (__f != __t) + *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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; + } +# 1931 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/random.tcc" 3 + template<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + normal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + 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<typename _RealType> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + lognormal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + while (__f != __t) + *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + + while (__f != __t) + *__f++ = 2 * _M_gd(__urng); + } + + template<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution<result_type>::param_type& __p) + { + + while (__f != __t) + *__f++ = 2 * _M_gd(__urng, __p); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + cauchy_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + + while (__f != __t) + *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); + } + + template<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + typedef typename std::gamma_distribution<result_type>::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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); + } + + template<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + typename std::gamma_distribution<result_type>::param_type + __p2(__p.n() / 2, 2); + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + 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); + } + + + + + + + template<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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.331 * __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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + gamma_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _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)); + + 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.331 * __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.331 * __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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + weibull_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + __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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + extreme_value_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f != __t) + *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) + - __aurng())); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<typename _RealType, typename _CharT, typename _Traits> + 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<typename _IntType> + 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); + + __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), + __sum); + + _M_cp.reserve(_M_prob.size()); + std::partial_sum(_M_prob.begin(), _M_prob.end(), + std::back_inserter(_M_cp)); + + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template<typename _IntType> + template<typename _Func> + 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<typename _IntType> + template<typename _UniformRandomNumberGenerator> + 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<typename _IntType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + discrete_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + 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<typename _IntType, typename _CharT, typename _Traits> + 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<double>::max_digits10); + + std::vector<double> __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<typename _IntType, typename _CharT, typename _Traits> + 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<double> __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<typename _RealType> + 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)); + + + _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<typename _RealType> + template<typename _InputIteratorB, typename _InputIteratorW> + 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<typename _RealType> + template<typename _Func> + 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<typename _RealType> + template<typename _Func> + 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<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + piecewise_constant_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + __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<typename _RealType, typename _CharT, typename _Traits> + 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<double> __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<typename _RealType, typename _CharT, typename _Traits> + 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<double> __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<typename _RealType> + 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); + } + + + __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), + __sum); + + __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); + + __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); + + + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template<typename _RealType> + template<typename _InputIteratorB, typename _InputIteratorW> + 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<typename _RealType> + template<typename _Func> + 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<typename _RealType> + template<typename _Func> + 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<typename _RealType> + template<typename _UniformRandomNumberGenerator> + 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<typename _RealType> + template<typename _ForwardIterator, + typename _UniformRandomNumberGenerator> + void + piecewise_linear_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template<typename _RealType, typename _CharT, typename _Traits> + 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<double> __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<typename _RealType, typename _CharT, typename _Traits> + 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<double> __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<typename _IntType> + seed_seq::seed_seq(std::initializer_list<_IntType> __il) + { + for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) + _M_v.push_back(__detail::__mod<result_type, + __detail::_Shift<result_type, 32>::__value>(*__iter)); + } + + template<typename _InputIterator> + seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) + { + for (_InputIterator __iter = __begin; __iter != __end; ++__iter) + _M_v.push_back(__detail::__mod<result_type, + __detail::_Shift<result_type, 32>::__value>(*__iter)); + } + + template<typename _RandomAccessIterator> + 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<typename _RealType, size_t __bits, + typename _UniformRandomNumberGenerator> + _RealType + generate_canonical(_UniformRandomNumberGenerator& __urng) + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + const size_t __b + = std::min(static_cast<size_t>(std::numeric_limits<_RealType>::digits), + __bits); + const long double __r = static_cast<long double>(__urng.max()) + - static_cast<long double>(__urng.min()) + 1.0L; + const size_t __log2r = std::log(__r) / std::log(2.0L); + size_t __k = std::max<size_t>(1UL, (__b + __log2r - 1UL) / __log2r); + _RealType __sum = _RealType(0); + _RealType __tmp = _RealType(1); + for (; __k != 0; --__k) + { + __sum += _RealType(__urng() - __urng.min()) * __tmp; + __tmp *= __r; + } + return __sum / __tmp; + } + + +} +# 52 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/random" 2 3 +# 67 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 2 3 + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + template<typename _Iterator, typename _Compare> + void + __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, + _Iterator __c, _Compare __comp) + { + if (__comp(__a, __b)) + { + if (__comp(__b, __c)) + std::iter_swap(__result, __b); + else if (__comp(__a, __c)) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __a); + } + else if (__comp(__a, __c)) + std::iter_swap(__result, __a); + else if (__comp(__b, __c)) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __b); + } + + + template<typename _InputIterator, typename _Predicate> + inline _InputIterator + __find_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred, input_iterator_tag) + { + while (__first != __last && !__pred(__first)) + ++__first; + return __first; + } + + + template<typename _RandomAccessIterator, typename _Predicate> + _RandomAccessIterator + __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Predicate __pred, random_access_iterator_tag) + { + typename iterator_traits<_RandomAccessIterator>::difference_type + __trip_count = (__last - __first) >> 2; + + for (; __trip_count > 0; --__trip_count) + { + if (__pred(__first)) + return __first; + ++__first; + + if (__pred(__first)) + return __first; + ++__first; + + if (__pred(__first)) + return __first; + ++__first; + + if (__pred(__first)) + return __first; + ++__first; + } + + switch (__last - __first) + { + case 3: + if (__pred(__first)) + return __first; + ++__first; + case 2: + if (__pred(__first)) + return __first; + ++__first; + case 1: + if (__pred(__first)) + return __first; + ++__first; + case 0: + default: + return __last; + } + } + + template<typename _Iterator, typename _Predicate> + inline _Iterator + __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) + { + return __find_if(__first, __last, __pred, + std::__iterator_category(__first)); + } + + + template<typename _InputIterator, typename _Predicate> + inline _InputIterator + __find_if_not(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + return std::__find_if(__first, __last, + __gnu_cxx::__ops::__negate(__pred), + std::__iterator_category(__first)); + } + + + + + template<typename _InputIterator, typename _Predicate, typename _Distance> + _InputIterator + __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) + { + for (; __len; --__len, ++__first) + if (!__pred(__first)) + break; + return __first; + } +# 202 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + _ForwardIterator1 + __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __predicate) + { + + if (__first1 == __last1 || __first2 == __last2) + return __first1; + + + _ForwardIterator2 __p1(__first2); + if (++__p1 == __last2) + return std::__find_if(__first1, __last1, + __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); + + + _ForwardIterator2 __p; + _ForwardIterator1 __current = __first1; + + for (;;) + { + __first1 = + std::__find_if(__first1, __last1, + __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); + + if (__first1 == __last1) + return __last1; + + __p = __p1; + __current = __first1; + if (++__current == __last1) + return __last1; + + while (__predicate(__current, __p)) + { + if (++__p == __last2) + return __first1; + if (++__current == __last1) + return __last1; + } + ++__first1; + } + return __first1; + } + + + + + + + template<typename _ForwardIterator, typename _Integer, + typename _UnaryPredicate> + _ForwardIterator + __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, _UnaryPredicate __unary_pred, + std::forward_iterator_tag) + { + __first = std::__find_if(__first, __last, __unary_pred); + while (__first != __last) + { + typename iterator_traits<_ForwardIterator>::difference_type + __n = __count; + _ForwardIterator __i = __first; + ++__i; + while (__i != __last && __n != 1 && __unary_pred(__i)) + { + ++__i; + --__n; + } + if (__n == 1) + return __first; + if (__i == __last) + return __last; + __first = std::__find_if(++__i, __last, __unary_pred); + } + return __last; + } + + + + + + template<typename _RandomAccessIter, typename _Integer, + typename _UnaryPredicate> + _RandomAccessIter + __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, + _Integer __count, _UnaryPredicate __unary_pred, + std::random_access_iterator_tag) + { + typedef typename std::iterator_traits<_RandomAccessIter>::difference_type + _DistanceType; + + _DistanceType __tailSize = __last - __first; + _DistanceType __remainder = __count; + + while (__remainder <= __tailSize) + { + __first += __remainder; + __tailSize -= __remainder; + + + _RandomAccessIter __backTrack = __first; + while (__unary_pred(--__backTrack)) + { + if (--__remainder == 0) + return (__first - __count); + } + __remainder = __count + 1 - (__first - __backTrack); + } + return __last; + } + + template<typename _ForwardIterator, typename _Integer, + typename _UnaryPredicate> + _ForwardIterator + __search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, + _UnaryPredicate __unary_pred) + { + if (__count <= 0) + return __first; + + if (__count == 1) + return std::__find_if(__first, __last, __unary_pred); + + return std::__search_n_aux(__first, __last, __count, __unary_pred, + std::__iterator_category(__first)); + } + + + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + _ForwardIterator1 + __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + forward_iterator_tag, forward_iterator_tag, + _BinaryPredicate __comp) + { + if (__first2 == __last2) + return __last1; + + _ForwardIterator1 __result = __last1; + while (1) + { + _ForwardIterator1 __new_result + = std::__search(__first1, __last1, __first2, __last2, __comp); + if (__new_result == __last1) + return __result; + else + { + __result = __new_result; + __first1 = __new_result; + ++__first1; + } + } + } + + + template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, + typename _BinaryPredicate> + _BidirectionalIterator1 + __find_end(_BidirectionalIterator1 __first1, + _BidirectionalIterator1 __last1, + _BidirectionalIterator2 __first2, + _BidirectionalIterator2 __last2, + bidirectional_iterator_tag, bidirectional_iterator_tag, + _BinaryPredicate __comp) + { + + + + + + + typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; + typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; + + _RevIterator1 __rlast1(__first1); + _RevIterator2 __rlast2(__first2); + _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, + _RevIterator2(__last2), __rlast2, + __comp); + + if (__rresult == __rlast1) + return __last1; + else + { + _BidirectionalIterator1 __result = __rresult.base(); + std::advance(__result, -std::distance(__first2, __last2)); + return __result; + } + } +# 423 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + inline _ForwardIterator1 + find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) + { + + + + + + + ; + ; + + return std::__find_end(__first1, __last1, __first2, __last2, + std::__iterator_category(__first1), + std::__iterator_category(__first2), + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 471 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + inline _ForwardIterator1 + find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __comp) + { + + + + + + + ; + ; + + return std::__find_end(__first1, __last1, __first2, __last2, + std::__iterator_category(__first1), + std::__iterator_category(__first2), + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 506 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline bool + all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return __last == std::find_if_not(__first, __last, __pred); } +# 523 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline bool + none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return __last == std::find_if(__first, __last, __pred); } +# 541 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline bool + any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return !std::none_of(__first, __last, __pred); } +# 556 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline _InputIterator + find_if_not(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + + + + + ; + return std::__find_if_not(__first, __last, + __gnu_cxx::__ops::__pred_iter(__pred)); + } +# 580 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline bool + is_partitioned(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + __first = std::find_if_not(__first, __last, __pred); + return std::none_of(__first, __last, __pred); + } +# 598 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Predicate> + _ForwardIterator + partition_point(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + + + + + + + ; + + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + _DistanceType __len = std::distance(__first, __last); + _DistanceType __half; + _ForwardIterator __middle; + + while (__len > 0) + { + __half = __len >> 1; + __middle = __first; + std::advance(__middle, __half); + if (__pred(*__middle)) + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + else + __len = __half; + } + return __first; + } + + + template<typename _InputIterator, typename _OutputIterator, + typename _Predicate> + _OutputIterator + __remove_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) + { + for (; __first != __last; ++__first) + if (!__pred(__first)) + { + *__result = *__first; + ++__result; + } + return __result; + } +# 665 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, typename _Tp> + inline _OutputIterator + remove_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, const _Tp& __value) + { + + + + + + + ; + + return std::__remove_copy_if(__first, __last, __result, + __gnu_cxx::__ops::__iter_equals_val(__value)); + } +# 697 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _Predicate> + inline _OutputIterator + remove_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) + { + + + + + + + ; + + return std::__remove_copy_if(__first, __last, __result, + __gnu_cxx::__ops::__pred_iter(__pred)); + } +# 731 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _Predicate> + _OutputIterator + copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) + { + + + + + + + ; + + for (; __first != __last; ++__first) + if (__pred(*__first)) + { + *__result = *__first; + ++__result; + } + return __result; + } + + template<typename _InputIterator, typename _Size, typename _OutputIterator> + _OutputIterator + __copy_n(_InputIterator __first, _Size __n, + _OutputIterator __result, input_iterator_tag) + { + if (__n > 0) + { + while (true) + { + *__result = *__first; + ++__result; + if (--__n > 0) + ++__first; + else + break; + } + } + return __result; + } + + template<typename _RandomAccessIterator, typename _Size, + typename _OutputIterator> + inline _OutputIterator + __copy_n(_RandomAccessIterator __first, _Size __n, + _OutputIterator __result, random_access_iterator_tag) + { return std::copy(__first, __first + __n, __result); } +# 794 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Size, typename _OutputIterator> + inline _OutputIterator + copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) + { + + + + + + return std::__copy_n(__first, __n, __result, + std::__iterator_category(__first)); + } +# 822 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator1, + typename _OutputIterator2, typename _Predicate> + pair<_OutputIterator1, _OutputIterator2> + partition_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator1 __out_true, _OutputIterator2 __out_false, + _Predicate __pred) + { + + + + + + + + + ; + + for (; __first != __last; ++__first) + if (__pred(*__first)) + { + *__out_true = *__first; + ++__out_true; + } + else + { + *__out_false = *__first; + ++__out_false; + } + + return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); + } + + + template<typename _ForwardIterator, typename _Predicate> + _ForwardIterator + __remove_if(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + __first = std::__find_if(__first, __last, __pred); + if (__first == __last) + return __first; + _ForwardIterator __result = __first; + ++__first; + for (; __first != __last; ++__first) + if (!__pred(__first)) + { + *__result = std::move(*__first); + ++__result; + } + return __result; + } +# 891 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline _ForwardIterator + remove(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __value) + { + + + + + + ; + + return std::__remove_if(__first, __last, + __gnu_cxx::__ops::__iter_equals_val(__value)); + } +# 924 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Predicate> + inline _ForwardIterator + remove_if(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + + + + + + ; + + return std::__remove_if(__first, __last, + __gnu_cxx::__ops::__pred_iter(__pred)); + } + + template<typename _ForwardIterator, typename _BinaryPredicate> + _ForwardIterator + __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + if (__first == __last) + return __last; + _ForwardIterator __next = __first; + while (++__next != __last) + { + if (__binary_pred(__first, __next)) + return __first; + __first = __next; + } + return __last; + } + + template<typename _ForwardIterator, typename _BinaryPredicate> + _ForwardIterator + __unique(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + + __first = std::__adjacent_find(__first, __last, __binary_pred); + if (__first == __last) + return __last; + + + _ForwardIterator __dest = __first; + ++__first; + while (++__first != __last) + if (!__binary_pred(__dest, __first)) + *++__dest = std::move(*__first); + return ++__dest; + } +# 990 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + inline _ForwardIterator + unique(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + + ; + + return std::__unique(__first, __last, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 1020 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _BinaryPredicate> + inline _ForwardIterator + unique(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + + + + + + + ; + + return std::__unique(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); + } + + + + + + + + template<typename _ForwardIterator, typename _OutputIterator, + typename _BinaryPredicate> + _OutputIterator + __unique_copy(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __result, _BinaryPredicate __binary_pred, + forward_iterator_tag, output_iterator_tag) + { + + + + + + _ForwardIterator __next = __first; + *__result = *__first; + while (++__next != __last) + if (!__binary_pred(__first, __next)) + { + __first = __next; + *++__result = *__first; + } + return ++__result; + } + + + + + + + + template<typename _InputIterator, typename _OutputIterator, + typename _BinaryPredicate> + _OutputIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryPredicate __binary_pred, + input_iterator_tag, output_iterator_tag) + { + + + + + + typename iterator_traits<_InputIterator>::value_type __value = *__first; + __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) + __rebound_pred + = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); + *__result = __value; + while (++__first != __last) + if (!__rebound_pred(__first, __value)) + { + __value = *__first; + *++__result = __value; + } + return ++__result; + } + + + + + + + + template<typename _InputIterator, typename _ForwardIterator, + typename _BinaryPredicate> + _ForwardIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _BinaryPredicate __binary_pred, + input_iterator_tag, forward_iterator_tag) + { + + + + + *__result = *__first; + while (++__first != __last) + if (!__binary_pred(__result, __first)) + *++__result = *__first; + return ++__result; + } + + + + + + + template<typename _BidirectionalIterator> + void + __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, + bidirectional_iterator_tag) + { + while (true) + if (__first == __last || __first == --__last) + return; + else + { + std::iter_swap(__first, __last); + ++__first; + } + } + + + + + + + template<typename _RandomAccessIterator> + void + __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, + random_access_iterator_tag) + { + if (__first == __last) + return; + --__last; + while (__first < __last) + { + std::iter_swap(__first, __last); + ++__first; + --__last; + } + } +# 1175 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator> + inline void + reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) + { + + + + ; + std::__reverse(__first, __last, std::__iterator_category(__first)); + } +# 1202 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator, typename _OutputIterator> + _OutputIterator + reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, + _OutputIterator __result) + { + + + + + + ; + + while (__first != __last) + { + --__last; + *__result = *__last; + ++__result; + } + return __result; + } + + + + + + template<typename _EuclideanRingElement> + _EuclideanRingElement + __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) + { + while (__n != 0) + { + _EuclideanRingElement __t = __m % __n; + __m = __n; + __n = __t; + } + return __m; + } + + inline namespace _V2 + { + + + template<typename _ForwardIterator> + _ForwardIterator + __rotate(_ForwardIterator __first, + _ForwardIterator __middle, + _ForwardIterator __last, + forward_iterator_tag) + { + if (__first == __middle) + return __last; + else if (__last == __middle) + return __first; + + _ForwardIterator __first2 = __middle; + do + { + std::iter_swap(__first, __first2); + ++__first; + ++__first2; + if (__first == __middle) + __middle = __first2; + } + while (__first2 != __last); + + _ForwardIterator __ret = __first; + + __first2 = __middle; + + while (__first2 != __last) + { + std::iter_swap(__first, __first2); + ++__first; + ++__first2; + if (__first == __middle) + __middle = __first2; + else if (__first2 == __last) + __first2 = __middle; + } + return __ret; + } + + + template<typename _BidirectionalIterator> + _BidirectionalIterator + __rotate(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + bidirectional_iterator_tag) + { + + + + + if (__first == __middle) + return __last; + else if (__last == __middle) + return __first; + + std::__reverse(__first, __middle, bidirectional_iterator_tag()); + std::__reverse(__middle, __last, bidirectional_iterator_tag()); + + while (__first != __middle && __middle != __last) + { + std::iter_swap(__first, --__last); + ++__first; + } + + if (__first == __middle) + { + std::__reverse(__middle, __last, bidirectional_iterator_tag()); + return __last; + } + else + { + std::__reverse(__first, __middle, bidirectional_iterator_tag()); + return __first; + } + } + + + template<typename _RandomAccessIterator> + _RandomAccessIterator + __rotate(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + random_access_iterator_tag) + { + + + + + if (__first == __middle) + return __last; + else if (__last == __middle) + return __first; + + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _Distance; + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + _Distance __n = __last - __first; + _Distance __k = __middle - __first; + + if (__k == __n - __k) + { + std::swap_ranges(__first, __middle, __middle); + return __middle; + } + + _RandomAccessIterator __p = __first; + _RandomAccessIterator __ret = __first + (__last - __middle); + + for (;;) + { + if (__k < __n - __k) + { + if (__is_pod(_ValueType) && __k == 1) + { + _ValueType __t = std::move(*__p); + std::move(__p + 1, __p + __n, __p); + *(__p + __n - 1) = std::move(__t); + return __ret; + } + _RandomAccessIterator __q = __p + __k; + for (_Distance __i = 0; __i < __n - __k; ++ __i) + { + std::iter_swap(__p, __q); + ++__p; + ++__q; + } + __n %= __k; + if (__n == 0) + return __ret; + std::swap(__n, __k); + __k = __n - __k; + } + else + { + __k = __n - __k; + if (__is_pod(_ValueType) && __k == 1) + { + _ValueType __t = std::move(*(__p + __n - 1)); + std::move_backward(__p, __p + __n - 1, __p + __n); + *__p = std::move(__t); + return __ret; + } + _RandomAccessIterator __q = __p + __n; + __p = __q - __k; + for (_Distance __i = 0; __i < __n - __k; ++ __i) + { + --__p; + --__q; + std::iter_swap(__p, __q); + } + __n %= __k; + if (__n == 0) + return __ret; + std::swap(__n, __k); + } + } + } +# 1429 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + inline _ForwardIterator + rotate(_ForwardIterator __first, _ForwardIterator __middle, + _ForwardIterator __last) + { + + + + ; + ; + + return std::__rotate(__first, __middle, __last, + std::__iterator_category(__first)); + } + + } +# 1466 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _OutputIterator> + inline _OutputIterator + rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, + _ForwardIterator __last, _OutputIterator __result) + { + + + + + ; + ; + + return std::copy(__first, __middle, + std::copy(__middle, __last, __result)); + } + + + template<typename _ForwardIterator, typename _Predicate> + _ForwardIterator + __partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred, forward_iterator_tag) + { + if (__first == __last) + return __first; + + while (__pred(*__first)) + if (++__first == __last) + return __first; + + _ForwardIterator __next = __first; + + while (++__next != __last) + if (__pred(*__next)) + { + std::iter_swap(__first, __next); + ++__first; + } + + return __first; + } + + + template<typename _BidirectionalIterator, typename _Predicate> + _BidirectionalIterator + __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, + _Predicate __pred, bidirectional_iterator_tag) + { + while (true) + { + while (true) + if (__first == __last) + return __first; + else if (__pred(*__first)) + ++__first; + else + break; + --__last; + while (true) + if (__first == __last) + return __first; + else if (!bool(__pred(*__last))) + --__last; + else + break; + std::iter_swap(__first, __last); + ++__first; + } + } +# 1543 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Pointer, typename _Predicate, + typename _Distance> + _ForwardIterator + __stable_partition_adaptive(_ForwardIterator __first, + _ForwardIterator __last, + _Predicate __pred, _Distance __len, + _Pointer __buffer, + _Distance __buffer_size) + { + if (__len == 1) + return __first; + + if (__len <= __buffer_size) + { + _ForwardIterator __result1 = __first; + _Pointer __result2 = __buffer; + + + + + *__result2 = std::move(*__first); + ++__result2; + ++__first; + for (; __first != __last; ++__first) + if (__pred(__first)) + { + *__result1 = std::move(*__first); + ++__result1; + } + else + { + *__result2 = std::move(*__first); + ++__result2; + } + + std::move(__buffer, __result2, __result1); + return __result1; + } + + _ForwardIterator __middle = __first; + std::advance(__middle, __len / 2); + _ForwardIterator __left_split = + std::__stable_partition_adaptive(__first, __middle, __pred, + __len / 2, __buffer, + __buffer_size); + + + + _Distance __right_len = __len - __len / 2; + _ForwardIterator __right_split = + std::__find_if_not_n(__middle, __right_len, __pred); + + if (__right_len) + __right_split = + std::__stable_partition_adaptive(__right_split, __last, __pred, + __right_len, + __buffer, __buffer_size); + + std::rotate(__left_split, __middle, __right_split); + std::advance(__left_split, std::distance(__middle, __right_split)); + return __left_split; + } + + template<typename _ForwardIterator, typename _Predicate> + _ForwardIterator + __stable_partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + __first = std::__find_if_not(__first, __last, __pred); + + if (__first == __last) + return __first; + + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, __last); + return + std::__stable_partition_adaptive(__first, __last, __pred, + _DistanceType(__buf.requested_size()), + __buf.begin(), + _DistanceType(__buf.size())); + } +# 1646 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Predicate> + inline _ForwardIterator + stable_partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + + + + + + ; + + return std::__stable_partition(__first, __last, + __gnu_cxx::__ops::__pred_iter(__pred)); + } + + + template<typename _RandomAccessIterator, typename _Compare> + void + __heap_select(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, _Compare __comp) + { + std::__make_heap(__first, __middle, __comp); + for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) + if (__comp(__i, __first)) + std::__pop_heap(__first, __middle, __i, __comp); + } + + + + template<typename _InputIterator, typename _RandomAccessIterator, + typename _Compare> + _RandomAccessIterator + __partial_sort_copy(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __result_first, + _RandomAccessIterator __result_last, + _Compare __comp) + { + typedef typename iterator_traits<_InputIterator>::value_type + _InputValueType; + typedef iterator_traits<_RandomAccessIterator> _RItTraits; + typedef typename _RItTraits::difference_type _DistanceType; + + if (__result_first == __result_last) + return __result_last; + _RandomAccessIterator __result_real_last = __result_first; + while (__first != __last && __result_real_last != __result_last) + { + *__result_real_last = *__first; + ++__result_real_last; + ++__first; + } + + std::__make_heap(__result_first, __result_real_last, __comp); + while (__first != __last) + { + if (__comp(__first, __result_first)) + std::__adjust_heap(__result_first, _DistanceType(0), + _DistanceType(__result_real_last + - __result_first), + _InputValueType(*__first), __comp); + ++__first; + } + std::__sort_heap(__result_first, __result_real_last, __comp); + return __result_real_last; + } +# 1732 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _RandomAccessIterator> + inline _RandomAccessIterator + partial_sort_copy(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __result_first, + _RandomAccessIterator __result_last) + { + typedef typename iterator_traits<_InputIterator>::value_type + _InputValueType; + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _OutputValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + + + + + + + + ; + ; + + return std::__partial_sort_copy(__first, __last, + __result_first, __result_last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 1780 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _RandomAccessIterator, + typename _Compare> + inline _RandomAccessIterator + partial_sort_copy(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __result_first, + _RandomAccessIterator __result_last, + _Compare __comp) + { + typedef typename iterator_traits<_InputIterator>::value_type + _InputValueType; + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _OutputValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + + + + + + + + + + + ; + ; + + return std::__partial_sort_copy(__first, __last, + __result_first, __result_last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + + template<typename _RandomAccessIterator, typename _Compare> + void + __unguarded_linear_insert(_RandomAccessIterator __last, + _Compare __comp) + { + typename iterator_traits<_RandomAccessIterator>::value_type + __val = std::move(*__last); + _RandomAccessIterator __next = __last; + --__next; + while (__comp(__val, __next)) + { + *__last = std::move(*__next); + __last = __next; + --__next; + } + *__last = std::move(__val); + } + + + template<typename _RandomAccessIterator, typename _Compare> + void + __insertion_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + if (__first == __last) return; + + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + { + if (__comp(__i, __first)) + { + typename iterator_traits<_RandomAccessIterator>::value_type + __val = std::move(*__i); + std::move_backward(__first, __i, __i + 1); + *__first = std::move(__val); + } + else + std::__unguarded_linear_insert(__i, + __gnu_cxx::__ops::__val_comp_iter(__comp)); + } + } + + + template<typename _RandomAccessIterator, typename _Compare> + inline void + __unguarded_insertion_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + for (_RandomAccessIterator __i = __first; __i != __last; ++__i) + std::__unguarded_linear_insert(__i, + __gnu_cxx::__ops::__val_comp_iter(__comp)); + } + + + + + + enum { _S_threshold = 16 }; + + + template<typename _RandomAccessIterator, typename _Compare> + void + __final_insertion_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + if (__last - __first > int(_S_threshold)) + { + std::__insertion_sort(__first, __first + int(_S_threshold), __comp); + std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, + __comp); + } + else + std::__insertion_sort(__first, __last, __comp); + } + + + template<typename _RandomAccessIterator, typename _Compare> + _RandomAccessIterator + __unguarded_partition(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _RandomAccessIterator __pivot, _Compare __comp) + { + while (true) + { + while (__comp(__first, __pivot)) + ++__first; + --__last; + while (__comp(__pivot, __last)) + --__last; + if (!(__first < __last)) + return __first; + std::iter_swap(__first, __last); + ++__first; + } + } + + + template<typename _RandomAccessIterator, typename _Compare> + inline _RandomAccessIterator + __unguarded_partition_pivot(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + _RandomAccessIterator __mid = __first + (__last - __first) / 2; + std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, + __comp); + return std::__unguarded_partition(__first + 1, __last, __first, __comp); + } + + template<typename _RandomAccessIterator, typename _Compare> + inline void + __partial_sort(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + _Compare __comp) + { + std::__heap_select(__first, __middle, __last, __comp); + std::__sort_heap(__first, __middle, __comp); + } + + + template<typename _RandomAccessIterator, typename _Size, typename _Compare> + void + __introsort_loop(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Size __depth_limit, _Compare __comp) + { + while (__last - __first > int(_S_threshold)) + { + if (__depth_limit == 0) + { + std::__partial_sort(__first, __last, __last, __comp); + return; + } + --__depth_limit; + _RandomAccessIterator __cut = + std::__unguarded_partition_pivot(__first, __last, __comp); + std::__introsort_loop(__cut, __last, __depth_limit, __comp); + __last = __cut; + } + } + + + + template<typename _RandomAccessIterator, typename _Compare> + inline void + __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + if (__first != __last) + { + std::__introsort_loop(__first, __last, + std::__lg(__last - __first) * 2, + __comp); + std::__final_insertion_sort(__first, __last, __comp); + } + } + + template<typename _RandomAccessIterator, typename _Size, typename _Compare> + void + __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, + _RandomAccessIterator __last, _Size __depth_limit, + _Compare __comp) + { + while (__last - __first > 3) + { + if (__depth_limit == 0) + { + std::__heap_select(__first, __nth + 1, __last, __comp); + + std::iter_swap(__first, __nth); + return; + } + --__depth_limit; + _RandomAccessIterator __cut = + std::__unguarded_partition_pivot(__first, __last, __comp); + if (__cut <= __nth) + __first = __cut; + else + __last = __cut; + } + std::__insertion_sort(__first, __last, __comp); + } +# 2016 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp, typename _Compare> + inline _ForwardIterator + lower_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + + + ; + + return std::__lower_bound(__first, __last, __val, + __gnu_cxx::__ops::__iter_comp_val(__comp)); + } + + template<typename _ForwardIterator, typename _Tp, typename _Compare> + _ForwardIterator + __upper_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + _DistanceType __len = std::distance(__first, __last); + + while (__len > 0) + { + _DistanceType __half = __len >> 1; + _ForwardIterator __middle = __first; + std::advance(__middle, __half); + if (__comp(__val, __middle)) + __len = __half; + else + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + } + return __first; + } +# 2073 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline _ForwardIterator + upper_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + ; + + return std::__upper_bound(__first, __last, __val, + __gnu_cxx::__ops::__val_less_iter()); + } +# 2105 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp, typename _Compare> + inline _ForwardIterator + upper_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + + + ; + + return std::__upper_bound(__first, __last, __val, + __gnu_cxx::__ops::__val_comp_iter(__comp)); + } + + template<typename _ForwardIterator, typename _Tp, + typename _CompareItTp, typename _CompareTpIt> + pair<_ForwardIterator, _ForwardIterator> + __equal_range(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, + _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) + { + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + _DistanceType __len = std::distance(__first, __last); + + while (__len > 0) + { + _DistanceType __half = __len >> 1; + _ForwardIterator __middle = __first; + std::advance(__middle, __half); + if (__comp_it_val(__middle, __val)) + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + else if (__comp_val_it(__val, __middle)) + __len = __half; + else + { + _ForwardIterator __left + = std::__lower_bound(__first, __middle, __val, __comp_it_val); + std::advance(__first, __len); + _ForwardIterator __right + = std::__upper_bound(++__middle, __first, __val, __comp_val_it); + return pair<_ForwardIterator, _ForwardIterator>(__left, __right); + } + } + return pair<_ForwardIterator, _ForwardIterator>(__first, __first); + } +# 2179 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp> + inline pair<_ForwardIterator, _ForwardIterator> + equal_range(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + + ; + ; + + return std::__equal_range(__first, __last, __val, + __gnu_cxx::__ops::__iter_less_val(), + __gnu_cxx::__ops::__val_less_iter()); + } +# 2216 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp, typename _Compare> + inline pair<_ForwardIterator, _ForwardIterator> + equal_range(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + + + + + ; + + ; + + return std::__equal_range(__first, __last, __val, + __gnu_cxx::__ops::__iter_comp_val(__comp), + __gnu_cxx::__ops::__val_comp_iter(__comp)); + } +# 2252 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp> + bool + binary_search(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + ; + ; + + _ForwardIterator __i + = std::__lower_bound(__first, __last, __val, + __gnu_cxx::__ops::__iter_less_val()); + return __i != __last && !(__val < *__i); + } +# 2287 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp, typename _Compare> + bool + binary_search(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + + + + + + ; + + ; + + _ForwardIterator __i + = std::__lower_bound(__first, __last, __val, + __gnu_cxx::__ops::__iter_comp_val(__comp)); + return __i != __last && !bool(__comp(__val, *__i)); + } + + + + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + void + __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(__first2, __first1)) + { + *__result = std::move(*__first2); + ++__first2; + } + else + { + *__result = std::move(*__first1); + ++__first1; + } + ++__result; + } + if (__first1 != __last1) + std::move(__first1, __last1, __result); + } + + + template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, + typename _BidirectionalIterator3, typename _Compare> + void + __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, + _BidirectionalIterator1 __last1, + _BidirectionalIterator2 __first2, + _BidirectionalIterator2 __last2, + _BidirectionalIterator3 __result, + _Compare __comp) + { + if (__first1 == __last1) + { + std::move_backward(__first2, __last2, __result); + return; + } + else if (__first2 == __last2) + return; + + --__last1; + --__last2; + while (true) + { + if (__comp(__last2, __last1)) + { + *--__result = std::move(*__last1); + if (__first1 == __last1) + { + std::move_backward(__first2, ++__last2, __result); + return; + } + --__last1; + } + else + { + *--__result = std::move(*__last2); + if (__first2 == __last2) + return; + --__last2; + } + } + } + + + template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, + typename _Distance> + _BidirectionalIterator1 + __rotate_adaptive(_BidirectionalIterator1 __first, + _BidirectionalIterator1 __middle, + _BidirectionalIterator1 __last, + _Distance __len1, _Distance __len2, + _BidirectionalIterator2 __buffer, + _Distance __buffer_size) + { + _BidirectionalIterator2 __buffer_end; + if (__len1 > __len2 && __len2 <= __buffer_size) + { + if (__len2) + { + __buffer_end = std::move(__middle, __last, __buffer); + std::move_backward(__first, __middle, __last); + return std::move(__buffer, __buffer_end, __first); + } + else + return __first; + } + else if (__len1 <= __buffer_size) + { + if (__len1) + { + __buffer_end = std::move(__first, __middle, __buffer); + std::move(__middle, __last, __first); + return std::move_backward(__buffer, __buffer_end, __last); + } + else + return __last; + } + else + { + std::rotate(__first, __middle, __last); + std::advance(__first, std::distance(__middle, __last)); + return __first; + } + } + + + template<typename _BidirectionalIterator, typename _Distance, + typename _Pointer, typename _Compare> + void + __merge_adaptive(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Distance __len1, _Distance __len2, + _Pointer __buffer, _Distance __buffer_size, + _Compare __comp) + { + if (__len1 <= __len2 && __len1 <= __buffer_size) + { + _Pointer __buffer_end = std::move(__first, __middle, __buffer); + std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, + __first, __comp); + } + else if (__len2 <= __buffer_size) + { + _Pointer __buffer_end = std::move(__middle, __last, __buffer); + std::__move_merge_adaptive_backward(__first, __middle, __buffer, + __buffer_end, __last, __comp); + } + else + { + _BidirectionalIterator __first_cut = __first; + _BidirectionalIterator __second_cut = __middle; + _Distance __len11 = 0; + _Distance __len22 = 0; + if (__len1 > __len2) + { + __len11 = __len1 / 2; + std::advance(__first_cut, __len11); + __second_cut + = std::__lower_bound(__middle, __last, *__first_cut, + __gnu_cxx::__ops::__iter_comp_val(__comp)); + __len22 = std::distance(__middle, __second_cut); + } + else + { + __len22 = __len2 / 2; + std::advance(__second_cut, __len22); + __first_cut + = std::__upper_bound(__first, __middle, *__second_cut, + __gnu_cxx::__ops::__val_comp_iter(__comp)); + __len11 = std::distance(__first, __first_cut); + } + + _BidirectionalIterator __new_middle + = std::__rotate_adaptive(__first_cut, __middle, __second_cut, + __len1 - __len11, __len22, __buffer, + __buffer_size); + std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, + __len22, __buffer, __buffer_size, __comp); + std::__merge_adaptive(__new_middle, __second_cut, __last, + __len1 - __len11, + __len2 - __len22, __buffer, + __buffer_size, __comp); + } + } + + + template<typename _BidirectionalIterator, typename _Distance, + typename _Compare> + void + __merge_without_buffer(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Distance __len1, _Distance __len2, + _Compare __comp) + { + if (__len1 == 0 || __len2 == 0) + return; + + if (__len1 + __len2 == 2) + { + if (__comp(__middle, __first)) + std::iter_swap(__first, __middle); + return; + } + + _BidirectionalIterator __first_cut = __first; + _BidirectionalIterator __second_cut = __middle; + _Distance __len11 = 0; + _Distance __len22 = 0; + if (__len1 > __len2) + { + __len11 = __len1 / 2; + std::advance(__first_cut, __len11); + __second_cut + = std::__lower_bound(__middle, __last, *__first_cut, + __gnu_cxx::__ops::__iter_comp_val(__comp)); + __len22 = std::distance(__middle, __second_cut); + } + else + { + __len22 = __len2 / 2; + std::advance(__second_cut, __len22); + __first_cut + = std::__upper_bound(__first, __middle, *__second_cut, + __gnu_cxx::__ops::__val_comp_iter(__comp)); + __len11 = std::distance(__first, __first_cut); + } + + std::rotate(__first_cut, __middle, __second_cut); + _BidirectionalIterator __new_middle = __first_cut; + std::advance(__new_middle, std::distance(__middle, __second_cut)); + std::__merge_without_buffer(__first, __first_cut, __new_middle, + __len11, __len22, __comp); + std::__merge_without_buffer(__new_middle, __second_cut, __last, + __len1 - __len11, __len2 - __len22, __comp); + } + + template<typename _BidirectionalIterator, typename _Compare> + void + __inplace_merge(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_BidirectionalIterator>::value_type + _ValueType; + typedef typename iterator_traits<_BidirectionalIterator>::difference_type + _DistanceType; + + if (__first == __middle || __middle == __last) + return; + + const _DistanceType __len1 = std::distance(__first, __middle); + const _DistanceType __len2 = std::distance(__middle, __last); + + typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; + _TmpBuf __buf(__first, __last); + + if (__buf.begin() == 0) + std::__merge_without_buffer + (__first, __middle, __last, __len1, __len2, __comp); + else + std::__merge_adaptive + (__first, __middle, __last, __len1, __len2, __buf.begin(), + _DistanceType(__buf.size()), __comp); + } +# 2584 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator> + inline void + inplace_merge(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last) + { + + + + + + ; + ; + + std::__inplace_merge(__first, __middle, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 2624 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator, typename _Compare> + inline void + inplace_merge(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Compare __comp) + { + + + + + + + ; + ; + + std::__inplace_merge(__first, __middle, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + + + template<typename _InputIterator, typename _OutputIterator, + typename _Compare> + _OutputIterator + __move_merge(_InputIterator __first1, _InputIterator __last1, + _InputIterator __first2, _InputIterator __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(__first2, __first1)) + { + *__result = std::move(*__first2); + ++__first2; + } + else + { + *__result = std::move(*__first1); + ++__first1; + } + ++__result; + } + return std::move(__first2, __last2, std::move(__first1, __last1, __result)) + + ; + } + + template<typename _RandomAccessIterator1, typename _RandomAccessIterator2, + typename _Distance, typename _Compare> + void + __merge_sort_loop(_RandomAccessIterator1 __first, + _RandomAccessIterator1 __last, + _RandomAccessIterator2 __result, _Distance __step_size, + _Compare __comp) + { + const _Distance __two_step = 2 * __step_size; + + while (__last - __first >= __two_step) + { + __result = std::__move_merge(__first, __first + __step_size, + __first + __step_size, + __first + __two_step, + __result, __comp); + __first += __two_step; + } + __step_size = std::min(_Distance(__last - __first), __step_size); + + std::__move_merge(__first, __first + __step_size, + __first + __step_size, __last, __result, __comp); + } + + template<typename _RandomAccessIterator, typename _Distance, + typename _Compare> + void + __chunk_insertion_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Distance __chunk_size, _Compare __comp) + { + while (__last - __first >= __chunk_size) + { + std::__insertion_sort(__first, __first + __chunk_size, __comp); + __first += __chunk_size; + } + std::__insertion_sort(__first, __last, __comp); + } + + enum { _S_chunk_size = 7 }; + + template<typename _RandomAccessIterator, typename _Pointer, typename _Compare> + void + __merge_sort_with_buffer(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Pointer __buffer, _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _Distance; + + const _Distance __len = __last - __first; + const _Pointer __buffer_last = __buffer + __len; + + _Distance __step_size = _S_chunk_size; + std::__chunk_insertion_sort(__first, __last, __step_size, __comp); + + while (__step_size < __len) + { + std::__merge_sort_loop(__first, __last, __buffer, + __step_size, __comp); + __step_size *= 2; + std::__merge_sort_loop(__buffer, __buffer_last, __first, + __step_size, __comp); + __step_size *= 2; + } + } + + template<typename _RandomAccessIterator, typename _Pointer, + typename _Distance, typename _Compare> + void + __stable_sort_adaptive(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Pointer __buffer, _Distance __buffer_size, + _Compare __comp) + { + const _Distance __len = (__last - __first + 1) / 2; + const _RandomAccessIterator __middle = __first + __len; + if (__len > __buffer_size) + { + std::__stable_sort_adaptive(__first, __middle, __buffer, + __buffer_size, __comp); + std::__stable_sort_adaptive(__middle, __last, __buffer, + __buffer_size, __comp); + } + else + { + std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); + std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); + } + std::__merge_adaptive(__first, __middle, __last, + _Distance(__middle - __first), + _Distance(__last - __middle), + __buffer, __buffer_size, + __comp); + } + + + template<typename _RandomAccessIterator, typename _Compare> + void + __inplace_stable_sort(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + if (__last - __first < 15) + { + std::__insertion_sort(__first, __last, __comp); + return; + } + _RandomAccessIterator __middle = __first + (__last - __first) / 2; + std::__inplace_stable_sort(__first, __middle, __comp); + std::__inplace_stable_sort(__middle, __last, __comp); + std::__merge_without_buffer(__first, __middle, __last, + __middle - __first, + __last - __middle, + __comp); + } +# 2795 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _Compare> + bool + __includes(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + if (__comp(__first2, __first1)) + return false; + else if (__comp(__first1, __first2)) + ++__first1; + else + ++__first1, ++__first2; + + return __first2 == __last2; + } +# 2831 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2> + inline bool + includes(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2) + { + + + + + + + + + + ; + ; + + return std::__includes(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 2873 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _Compare> + inline bool + includes(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _Compare __comp) + { + + + + + + + + + + ; + ; + + return std::__includes(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 2906 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator, typename _Compare> + bool + __next_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + if (__first == __last) + return false; + _BidirectionalIterator __i = __first; + ++__i; + if (__i == __last) + return false; + __i = __last; + --__i; + + for(;;) + { + _BidirectionalIterator __ii = __i; + --__i; + if (__comp(__i, __ii)) + { + _BidirectionalIterator __j = __last; + while (!__comp(__i, --__j)) + {} + std::iter_swap(__i, __j); + std::__reverse(__ii, __last, + std::__iterator_category(__first)); + return true; + } + if (__i == __first) + { + std::__reverse(__first, __last, + std::__iterator_category(__first)); + return false; + } + } + } +# 2955 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator> + inline bool + next_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last) + { + + + + + + ; + + return std::__next_permutation + (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); + } +# 2986 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator, typename _Compare> + inline bool + next_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + + + + + + + ; + + return std::__next_permutation + (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _BidirectionalIterator, typename _Compare> + bool + __prev_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + if (__first == __last) + return false; + _BidirectionalIterator __i = __first; + ++__i; + if (__i == __last) + return false; + __i = __last; + --__i; + + for(;;) + { + _BidirectionalIterator __ii = __i; + --__i; + if (__comp(__ii, __i)) + { + _BidirectionalIterator __j = __last; + while (!__comp(--__j, __i)) + {} + std::iter_swap(__i, __j); + std::__reverse(__ii, __last, + std::__iterator_category(__first)); + return true; + } + if (__i == __first) + { + std::__reverse(__first, __last, + std::__iterator_category(__first)); + return false; + } + } + } +# 3053 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator> + inline bool + prev_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last) + { + + + + + + ; + + return std::__prev_permutation(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 3084 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _BidirectionalIterator, typename _Compare> + inline bool + prev_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + + + + + + + ; + + return std::__prev_permutation(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + + + + template<typename _InputIterator, typename _OutputIterator, + typename _Predicate, typename _Tp> + _OutputIterator + __replace_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + _Predicate __pred, const _Tp& __new_value) + { + for (; __first != __last; ++__first, ++__result) + if (__pred(__first)) + *__result = __new_value; + else + *__result = *__first; + return __result; + } +# 3133 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, typename _Tp> + inline _OutputIterator + replace_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + const _Tp& __old_value, const _Tp& __new_value) + { + + + + + + + ; + + return std::__replace_copy_if(__first, __last, __result, + __gnu_cxx::__ops::__iter_equals_val(__old_value), + __new_value); + } +# 3167 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _Predicate, typename _Tp> + inline _OutputIterator + replace_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + _Predicate __pred, const _Tp& __new_value) + { + + + + + + + ; + + return std::__replace_copy_if(__first, __last, __result, + __gnu_cxx::__ops::__pred_iter(__pred), + __new_value); + } + + template<typename _InputIterator, typename _Predicate> + typename iterator_traits<_InputIterator>::difference_type + __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { + typename iterator_traits<_InputIterator>::difference_type __n = 0; + for (; __first != __last; ++__first) + if (__pred(__first)) + ++__n; + return __n; + } +# 3206 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + inline bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last) + { return std::is_sorted_until(__first, __last) == __last; } +# 3220 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Compare> + inline bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { return std::is_sorted_until(__first, __last, __comp) == __last; } + + template<typename _ForwardIterator, typename _Compare> + _ForwardIterator + __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + if (__first == __last) + return __last; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (__comp(__next, __first)) + return __next; + return __next; + } +# 3249 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + inline _ForwardIterator + is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + ; + + return std::__is_sorted_until(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 3272 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Compare> + inline _ForwardIterator + is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + + + + + + ; + + return std::__is_sorted_until(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 3296 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _Tp> + constexpr + inline pair<const _Tp&, const _Tp&> + minmax(const _Tp& __a, const _Tp& __b) + { + + + + return __b < __a ? pair<const _Tp&, const _Tp&>(__b, __a) + : pair<const _Tp&, const _Tp&>(__a, __b); + } +# 3317 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _Tp, typename _Compare> + constexpr + inline pair<const _Tp&, const _Tp&> + minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a) + : pair<const _Tp&, const _Tp&>(__a, __b); + } + + template<typename _ForwardIterator, typename _Compare> + constexpr + pair<_ForwardIterator, _ForwardIterator> + __minmax_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + _ForwardIterator __next = __first; + if (__first == __last + || ++__next == __last) + return std::make_pair(__first, __first); + + _ForwardIterator __min{}, __max{}; + if (__comp(__next, __first)) + { + __min = __next; + __max = __first; + } + else + { + __min = __first; + __max = __next; + } + + __first = __next; + ++__first; + + while (__first != __last) + { + __next = __first; + if (++__next == __last) + { + if (__comp(__first, __min)) + __min = __first; + else if (!__comp(__first, __max)) + __max = __first; + break; + } + + if (__comp(__next, __first)) + { + if (__comp(__next, __min)) + __min = __next; + if (!__comp(__first, __max)) + __max = __first; + } + else + { + if (__comp(__first, __min)) + __min = __first; + if (!__comp(__next, __max)) + __max = __next; + } + + __first = __next; + ++__first; + } + + return std::make_pair(__min, __max); + } +# 3397 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + constexpr + inline pair<_ForwardIterator, _ForwardIterator> + minmax_element(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + ; + + return std::__minmax_element(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 3424 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Compare> + constexpr + inline pair<_ForwardIterator, _ForwardIterator> + minmax_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + + + + + + ; + + return std::__minmax_element(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + + template<typename _Tp> + constexpr + inline _Tp + min(initializer_list<_Tp> __l) + { return *std::min_element(__l.begin(), __l.end()); } + + template<typename _Tp, typename _Compare> + constexpr + inline _Tp + min(initializer_list<_Tp> __l, _Compare __comp) + { return *std::min_element(__l.begin(), __l.end(), __comp); } + + template<typename _Tp> + constexpr + inline _Tp + max(initializer_list<_Tp> __l) + { return *std::max_element(__l.begin(), __l.end()); } + + template<typename _Tp, typename _Compare> + constexpr + inline _Tp + max(initializer_list<_Tp> __l, _Compare __comp) + { return *std::max_element(__l.begin(), __l.end(), __comp); } + + template<typename _Tp> + constexpr + inline pair<_Tp, _Tp> + minmax(initializer_list<_Tp> __l) + { + pair<const _Tp*, const _Tp*> __p = + std::minmax_element(__l.begin(), __l.end()); + return std::make_pair(*__p.first, *__p.second); + } + + template<typename _Tp, typename _Compare> + constexpr + inline pair<_Tp, _Tp> + minmax(initializer_list<_Tp> __l, _Compare __comp) + { + pair<const _Tp*, const _Tp*> __p = + std::minmax_element(__l.begin(), __l.end(), __comp); + return std::make_pair(*__p.first, *__p.second); + } + + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + bool + __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _BinaryPredicate __pred) + { + + + for (; __first1 != __last1; ++__first1, ++__first2) + if (!__pred(__first1, __first2)) + break; + + if (__first1 == __last1) + return true; + + + + _ForwardIterator2 __last2 = __first2; + std::advance(__last2, std::distance(__first1, __last1)); + for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) + { + if (__scan != std::__find_if(__first1, __scan, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) + continue; + + auto __matches + = std::__count_if(__first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); + if (0 == __matches || + std::__count_if(__scan, __last1, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) + != __matches) + return false; + } + return true; + } +# 3535 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + inline bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2) + { + + + + + + + ; + + return std::__is_permutation(__first1, __last1, __first2, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 3566 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + inline bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _BinaryPredicate __pred) + { + + + + + + + ; + + return std::__is_permutation(__first1, __last1, __first2, + __gnu_cxx::__ops::__iter_comp_iter(__pred)); + } + + + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + bool + __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __pred) + { + using _Cat1 + = typename iterator_traits<_ForwardIterator1>::iterator_category; + using _Cat2 + = typename iterator_traits<_ForwardIterator2>::iterator_category; + using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; + using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; + constexpr bool __ra_iters = _It1_is_RA() && _It2_is_RA(); + if (__ra_iters) + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 != __d2) + return false; + } + + + + for (; __first1 != __last1 && __first2 != __last2; + ++__first1, ++__first2) + if (!__pred(__first1, __first2)) + break; + + if (__ra_iters) + { + if (__first1 == __last1) + return true; + } + else + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 == 0 && __d2 == 0) + return true; + if (__d1 != __d2) + return false; + } + + for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) + { + if (__scan != std::__find_if(__first1, __scan, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) + continue; + + auto __matches = std::__count_if(__first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); + if (0 == __matches + || std::__count_if(__scan, __last1, + __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) + != __matches) + return false; + } + return true; + } +# 3659 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + inline bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) + { + ; + ; + + return + std::__is_permutation(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 3686 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + inline bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __pred) + { + ; + ; + + return std::__is_permutation(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__pred)); + } +# 3714 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, + typename _UniformRandomNumberGenerator> + void + shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, + _UniformRandomNumberGenerator&& __g) + { + + + + ; + + if (__first == __last) + return; + + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + typedef typename std::make_unsigned<_DistanceType>::type __ud_type; + typedef typename std::uniform_int_distribution<__ud_type> __distr_type; + typedef typename __distr_type::param_type __p_type; + __distr_type __d; + + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); + } + + + + + + + +# 3759 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Function> + _Function + for_each(_InputIterator __first, _InputIterator __last, _Function __f) + { + + + ; + for (; __first != __last; ++__first) + __f(*__first); + return std::move(__f); + } +# 3780 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Tp> + inline _InputIterator + find(_InputIterator __first, _InputIterator __last, + const _Tp& __val) + { + + + + + ; + return std::__find_if(__first, __last, + __gnu_cxx::__ops::__iter_equals_val(__val)); + } +# 3804 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline _InputIterator + find_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + + + + + ; + + return std::__find_if(__first, __last, + __gnu_cxx::__ops::__pred_iter(__pred)); + } +# 3835 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _ForwardIterator> + _InputIterator + find_first_of(_InputIterator __first1, _InputIterator __last1, + _ForwardIterator __first2, _ForwardIterator __last2) + { + + + + + + + ; + ; + + for (; __first1 != __last1; ++__first1) + for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) + if (*__first1 == *__iter) + return __first1; + return __last1; + } +# 3875 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _ForwardIterator, + typename _BinaryPredicate> + _InputIterator + find_first_of(_InputIterator __first1, _InputIterator __last1, + _ForwardIterator __first2, _ForwardIterator __last2, + _BinaryPredicate __comp) + { + + + + + + + ; + ; + + for (; __first1 != __last1; ++__first1) + for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) + if (__comp(*__first1, *__iter)) + return __first1; + return __last1; + } +# 3907 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + inline _ForwardIterator + adjacent_find(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + ; + + return std::__adjacent_find(__first, __last, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 3932 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _BinaryPredicate> + inline _ForwardIterator + adjacent_find(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + + + + + + ; + + return std::__adjacent_find(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); + } +# 3957 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Tp> + inline typename iterator_traits<_InputIterator>::difference_type + count(_InputIterator __first, _InputIterator __last, const _Tp& __value) + { + + + + + ; + + return std::__count_if(__first, __last, + __gnu_cxx::__ops::__iter_equals_val(__value)); + } +# 3980 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _Predicate> + inline typename iterator_traits<_InputIterator>::difference_type + count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { + + + + + ; + + return std::__count_if(__first, __last, + __gnu_cxx::__ops::__pred_iter(__pred)); + } +# 4020 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2> + inline _ForwardIterator1 + search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) + { + + + + + + + ; + ; + + return std::__search(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_equal_to_iter()); + } +# 4059 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator1, typename _ForwardIterator2, + typename _BinaryPredicate> + inline _ForwardIterator1 + search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __predicate) + { + + + + + + + ; + ; + + return std::__search(__first1, __last1, __first2, __last2, + __gnu_cxx::__ops::__iter_comp_iter(__predicate)); + } +# 4094 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Integer, typename _Tp> + inline _ForwardIterator + search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, const _Tp& __val) + { + + + + + ; + + return std::__search_n(__first, __last, __count, + __gnu_cxx::__ops::__iter_equals_val(__val)); + } +# 4127 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Integer, typename _Tp, + typename _BinaryPredicate> + inline _ForwardIterator + search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, const _Tp& __val, + _BinaryPredicate __binary_pred) + { + + + + + ; + + return std::__search_n(__first, __last, __count, + __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); + } +# 4161 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _UnaryOperation> + _OutputIterator + transform(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _UnaryOperation __unary_op) + { + + + + + + ; + + for (; __first != __last; ++__first, ++__result) + *__result = __unary_op(*__first); + return __result; + } +# 4198 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _BinaryOperation> + _OutputIterator + transform(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _OutputIterator __result, + _BinaryOperation __binary_op) + { + + + + + + + ; + + for (; __first1 != __last1; ++__first1, ++__first2, ++__result) + *__result = __binary_op(*__first1, *__first2); + return __result; + } +# 4231 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Tp> + void + replace(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __old_value, const _Tp& __new_value) + { + + + + + + + + ; + + for (; __first != __last; ++__first) + if (*__first == __old_value) + *__first = __new_value; + } +# 4263 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Predicate, typename _Tp> + void + replace_if(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred, const _Tp& __new_value) + { + + + + + + + + ; + + for (; __first != __last; ++__first) + if (__pred(*__first)) + *__first = __new_value; + } +# 4295 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Generator> + void + generate(_ForwardIterator __first, _ForwardIterator __last, + _Generator __gen) + { + + + + + ; + + for (; __first != __last; ++__first) + *__first = __gen(); + } +# 4326 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _OutputIterator, typename _Size, typename _Generator> + _OutputIterator + generate_n(_OutputIterator __first, _Size __n, _Generator __gen) + { + + + + + + for (__decltype(__n + 0) __niter = __n; + __niter > 0; --__niter, ++__first) + *__first = __gen(); + return __first; + } +# 4362 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator> + inline _OutputIterator + unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result) + { + + + + + + + ; + + if (__first == __last) + return __result; + return std::__unique_copy(__first, __last, __result, + __gnu_cxx::__ops::__iter_equal_to_iter(), + std::__iterator_category(__first), + std::__iterator_category(__result)); + } +# 4402 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator, typename _OutputIterator, + typename _BinaryPredicate> + inline _OutputIterator + unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + _BinaryPredicate __binary_pred) + { + + + + + ; + + if (__first == __last) + return __result; + return std::__unique_copy(__first, __last, __result, + __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), + std::__iterator_category(__first), + std::__iterator_category(__result)); + } +# 4434 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator> + inline void + random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + ; + + if (__first != __last) + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + { + + _RandomAccessIterator __j = __first + + std::rand() % ((__i - __first) + 1); + if (__i != __j) + std::iter_swap(__i, __j); + } + } +# 4468 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, typename _RandomNumberGenerator> + void + random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, + + _RandomNumberGenerator&& __rand) + + + + { + + + + ; + + if (__first == __last) + return; + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + { + _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); + if (__i != __j) + std::iter_swap(__i, __j); + } + } +# 4508 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Predicate> + inline _ForwardIterator + partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + + + + + + ; + + return std::__partition(__first, __last, __pred, + std::__iterator_category(__first)); + } +# 4541 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator> + inline void + partial_sort(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last) + { + + + + + + ; + ; + + std::__partial_sort(__first, __middle, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 4578 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + partial_sort(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + _Compare __comp) + { + + + + + + + ; + ; + + std::__partial_sort(__first, __middle, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 4613 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator> + inline void + nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, + _RandomAccessIterator __last) + { + + + + + + ; + ; + + if (__first == __last || __nth == __last) + return; + + std::__introselect(__first, __nth, __last, + std::__lg(__last - __first) * 2, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 4651 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, + _RandomAccessIterator __last, _Compare __comp) + { + + + + + + + ; + ; + + if (__first == __last || __nth == __last) + return; + + std::__introselect(__first, __nth, __last, + std::__lg(__last - __first) * 2, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } +# 4687 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator> + inline void + sort(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + + + ; + + std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); + } +# 4716 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + sort(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + + + + + + + ; + + std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + _OutputIterator + __merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(__first2, __first1)) + { + *__result = *__first2; + ++__first2; + } + else + { + *__result = *__first1; + ++__first1; + } + ++__result; + } + return std::copy(__first2, __last2, + std::copy(__first1, __last1, __result)); + } +# 4776 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator> + inline _OutputIterator + merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + + + + + + + + + + + ; + ; + + return std::__merge(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 4824 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + inline _OutputIterator + merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + + + + + + + + + + + ; + ; + + return std::__merge(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _RandomAccessIterator, typename _Compare> + inline void + __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; + _TmpBuf __buf(__first, __last); + + if (__buf.begin() == 0) + std::__inplace_stable_sort(__first, __last, __comp); + else + std::__stable_sort_adaptive(__first, __last, __buf.begin(), + _DistanceType(__buf.size()), __comp); + } +# 4886 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator> + inline void + stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + + + + + + ; + + std::__stable_sort(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 4919 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _RandomAccessIterator, typename _Compare> + inline void + stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + + + + + + + ; + + std::__stable_sort(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, + typename _Compare> + _OutputIterator + __set_union(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(__first1, __first2)) + { + *__result = *__first1; + ++__first1; + } + else if (__comp(__first2, __first1)) + { + *__result = *__first2; + ++__first2; + } + else + { + *__result = *__first1; + ++__first1; + ++__first2; + } + ++__result; + } + return std::copy(__first2, __last2, + std::copy(__first1, __last1, __result)); + } +# 4986 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator> + inline _OutputIterator + set_union(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + + + + + + + + + + + + + + ; + ; + + return std::__set_union(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5033 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + inline _OutputIterator + set_union(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + + + + + + + + + + + + + + ; + ; + + return std::__set_union(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, + typename _Compare> + _OutputIterator + __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + if (__comp(__first1, __first2)) + ++__first1; + else if (__comp(__first2, __first1)) + ++__first2; + else + { + *__result = *__first1; + ++__first1; + ++__first2; + ++__result; + } + return __result; + } +# 5101 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator> + inline _OutputIterator + set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + + + + + + + + + + + + ; + ; + + return std::__set_intersection(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5147 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + inline _OutputIterator + set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + + + + + + + + + + + + ; + ; + + return std::__set_intersection(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, + typename _Compare> + _OutputIterator + __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + if (__comp(__first1, __first2)) + { + *__result = *__first1; + ++__first1; + ++__result; + } + else if (__comp(__first2, __first1)) + ++__first2; + else + { + ++__first1; + ++__first2; + } + return std::copy(__first1, __last1, __result); + } +# 5217 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator> + inline _OutputIterator + set_difference(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + + + + + + + + + + + + ; + ; + + return std::__set_difference(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5265 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + inline _OutputIterator + set_difference(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) + { + + + + + + + + + + + + ; + ; + + return std::__set_difference(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, + typename _Compare> + _OutputIterator + __set_symmetric_difference(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) + { + while (__first1 != __last1 && __first2 != __last2) + if (__comp(__first1, __first2)) + { + *__result = *__first1; + ++__first1; + ++__result; + } + else if (__comp(__first2, __first1)) + { + *__result = *__first2; + ++__first2; + ++__result; + } + else + { + ++__first1; + ++__first2; + } + return std::copy(__first2, __last2, + std::copy(__first1, __last1, __result)); + } +# 5341 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator> + inline _OutputIterator + set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + + + + + + + + + + + + + + ; + ; + + return std::__set_symmetric_difference(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5389 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _InputIterator1, typename _InputIterator2, + typename _OutputIterator, typename _Compare> + inline _OutputIterator + set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) + { + + + + + + + + + + + + + + ; + ; + + return std::__set_symmetric_difference(__first1, __last1, + __first2, __last2, __result, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _ForwardIterator, typename _Compare> + constexpr + _ForwardIterator + __min_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + if (__first == __last) + return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (__comp(__first, __result)) + __result = __first; + return __result; + } +# 5440 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + constexpr + _ForwardIterator + inline min_element(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + ; + + return std::__min_element(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5464 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Compare> + constexpr + inline _ForwardIterator + min_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + + + + + + ; + + return std::__min_element(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + template<typename _ForwardIterator, typename _Compare> + constexpr + _ForwardIterator + __max_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + if (__first == __last) return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (__comp(__result, __first)) + __result = __first; + return __result; + } +# 5502 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator> + constexpr + inline _ForwardIterator + max_element(_ForwardIterator __first, _ForwardIterator __last) + { + + + + + ; + + return std::__max_element(__first, __last, + __gnu_cxx::__ops::__iter_less_iter()); + } +# 5526 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_algo.h" 3 + template<typename _ForwardIterator, typename _Compare> + constexpr + inline _ForwardIterator + max_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + + + + + + ; + + return std::__max_element(__first, __last, + __gnu_cxx::__ops::__iter_comp_iter(__comp)); + } + + +} +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/algorithm" 2 3 +# 92 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 173 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" + + + + + + + + + +# 181 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +typedef signed char qint8; +typedef unsigned char quint8; +typedef short qint16; +typedef unsigned short quint16; +typedef int qint32; +typedef unsigned int quint32; +# 195 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +typedef long long qint64; +typedef unsigned long long quint64; + + +typedef qint64 qlonglong; +typedef quint64 qulonglong; + + + + + + +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; + + + +typedef float qreal; +# 356 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +extern "C" + +__attribute__((visibility("default"))) const char *qVersion() noexcept; +# 384 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +namespace QtPrivate { + template <class T> + struct AlignOfHelper + { + char c; + T type; + + AlignOfHelper(); + ~AlignOfHelper(); + }; + + template <class T> + struct AlignOf_Default + { + enum { Value = sizeof(AlignOfHelper<T>) - sizeof(T) }; + }; + + template <class T> struct AlignOf : AlignOf_Default<T> { }; + template <class T> struct AlignOf<T &> : AlignOf<T> {}; + template <size_t N, class T> struct AlignOf<T[N]> : AlignOf<T> {}; + + + template <class T> struct AlignOf<T &&> : AlignOf<T> {}; +# 424 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +} +# 440 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +template <int> struct QIntegerForSize; +template <> struct QIntegerForSize<1> { typedef quint8 Unsigned; typedef qint8 Signed; }; +template <> struct QIntegerForSize<2> { typedef quint16 Unsigned; typedef qint16 Signed; }; +template <> struct QIntegerForSize<4> { typedef quint32 Unsigned; typedef qint32 Signed; }; +template <> struct QIntegerForSize<8> { typedef quint64 Unsigned; typedef qint64 Signed; }; + +template <> struct QIntegerForSize<16> { __extension__ typedef unsigned __int128 Unsigned; __extension__ typedef __int128 Signed; }; + +template <class T> struct QIntegerForSizeof: QIntegerForSize<sizeof(T)> { }; +typedef QIntegerForSize<8>::Signed qregisterint; +typedef QIntegerForSize<8>::Unsigned qregisteruint; +typedef QIntegerForSizeof<void*>::Unsigned quintptr; +typedef QIntegerForSizeof<void*>::Signed qptrdiff; +typedef qptrdiff qintptr; +# 516 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +typedef int QNoImplicitBoolCast; + + + + + +template <typename T> +constexpr inline T qAbs(const T &t) { return t >= 0 ? t : -t; } + +constexpr inline int qRound(double d) +{ return d >= 0.0 ? int(d + 0.5) : int(d - double(int(d-1)) + 0.5) + int(d-1); } +constexpr inline int qRound(float d) +{ return d >= 0.0f ? int(d + 0.5f) : int(d - float(int(d-1)) + 0.5f) + int(d-1); } + + + + + + + +constexpr inline qint64 qRound64(double d) +{ return d >= 0.0 ? qint64(d + 0.5) : qint64(d - double(qint64(d-1)) + 0.5) + qint64(d-1); } +constexpr inline qint64 qRound64(float d) +{ return d >= 0.0f ? qint64(d + 0.5f) : qint64(d - float(qint64(d-1)) + 0.5f) + qint64(d-1); } + + + + + + + +template <typename T> +constexpr inline const T &qMin(const T &a, const T &b) { return (a < b) ? a : b; } +template <typename T> +constexpr inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; } +template <typename T> +constexpr inline const T &qBound(const T &min, const T &val, const T &max) +{ return qMax(min, qMin(max, val)); } +# 609 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +class QDataStream; +# 637 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +inline void qt_noop(void) {} +# 664 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +__attribute__((__noreturn__)) __attribute__((visibility("default"))) void qTerminate() noexcept; + + + + + + + +__attribute__((visibility("default"))) bool qSharedBuild() noexcept; +# 711 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +class QString; +__attribute__((visibility("default"))) QString qt_error_string(int errorCode = -1); + + +__attribute__((__noreturn__)) + +__attribute__((visibility("default"))) void qt_assert(const char *assertion, const char *file, int line) noexcept; +# 732 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +__attribute__((__noreturn__)) + +__attribute__((visibility("default"))) void qt_assert_x(const char *where, const char *what, const char *file, int line) noexcept; +# 765 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +__attribute__((visibility("default"))) void qt_check_pointer(const char *, int); +__attribute__((visibility("default"))) void qBadAlloc(); +# 778 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +template <typename T> +inline T *q_check_ptr(T *p) { do { if (!(p)) qBadAlloc(); } while (0); return p; } + +typedef void (*QFunctionPointer)(); + + + + + +constexpr static inline bool qFuzzyCompare(double p1, double p2) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +constexpr static inline bool qFuzzyCompare(double p1, double p2) +{ + return (qAbs(p1 - p2) * 1000000000000. <= qMin(qAbs(p1), qAbs(p2))); +} + +constexpr static inline bool qFuzzyCompare(float p1, float p2) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +constexpr static inline bool qFuzzyCompare(float p1, float p2) +{ + return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1), qAbs(p2))); +} + + + + +constexpr static inline bool qFuzzyIsNull(double d) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +constexpr static inline bool qFuzzyIsNull(double d) +{ + return qAbs(d) <= 0.000000000001; +} + + + + +constexpr static inline bool qFuzzyIsNull(float f) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +constexpr static inline bool qFuzzyIsNull(float f) +{ + return qAbs(f) <= 0.00001f; +} + + + + + + +static inline bool qIsNull(double d) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +static inline bool qIsNull(double d) +{ + union U { + double d; + quint64 u; + }; + U val; + val.d = d; + return (val.u & static_cast<unsigned long long>(0x7fffffffffffffffULL)) == 0; +} + + + + + + +static inline bool qIsNull(float f) __attribute__ ((__warn_unused_result__)) __attribute__((__unused__)); +static inline bool qIsNull(float f) +{ + union U { + float f; + quint32 u; + }; + U val; + val.f = f; + return (val.u & 0x7fffffff) == 0; +} +# 871 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +namespace QtPrivate +{ +namespace SwapExceptionTester { + using std::swap; + template <typename T> + void checkSwap(T &t) + noexcept(noexcept(swap(t, t))); + +} +} + +template <typename T> +inline void qSwap(T &value1, T &value2) + noexcept(noexcept(QtPrivate::SwapExceptionTester::checkSwap(value1))) +{ + using std::swap; + swap(value1, value2); +} +# 897 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +__attribute__((visibility("default"))) void *qMallocAligned(size_t size, size_t alignment) __attribute__((alloc_size(1))); +__attribute__((visibility("default"))) void *qReallocAligned(void *ptr, size_t size, size_t oldsize, size_t alignment) __attribute__((alloc_size(2))); +__attribute__((visibility("default"))) void qFreeAligned(void *ptr); +# 939 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +template <typename T> +class QForeachContainer { + QForeachContainer &operator=(const QForeachContainer &) = delete; +public: + inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { } + const T c; + typename T::const_iterator i, e; + int control; +}; +# 974 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +template <typename T> static inline T *qGetPtrHelper(T *ptr) { return ptr; } +template <typename Wrapper> static inline typename Wrapper::pointer qGetPtrHelper(const Wrapper &p) { return p.data(); } +# 1007 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +__attribute__((visibility("default"))) QString qtTrId(const char *id, int n = -1); +# 1036 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +template <typename... Args> +struct QNonConstOverload +{ + template <typename R, typename T> + constexpr auto operator()(R (T::*ptr)(Args...)) const noexcept -> decltype(ptr) + { return ptr; } + + template <typename R, typename T> + static constexpr auto of(R (T::*ptr)(Args...)) noexcept -> decltype(ptr) + { return ptr; } +}; + +template <typename... Args> +struct QConstOverload +{ + template <typename R, typename T> + constexpr auto operator()(R (T::*ptr)(Args...) const) const noexcept -> decltype(ptr) + { return ptr; } + + template <typename R, typename T> + static constexpr auto of(R (T::*ptr)(Args...) const) noexcept -> decltype(ptr) + { return ptr; } +}; + +template <typename... Args> +struct QOverload : QConstOverload<Args...>, QNonConstOverload<Args...> +{ + using QConstOverload<Args...>::of; + using QConstOverload<Args...>::operator(); + using QNonConstOverload<Args...>::of; + using QNonConstOverload<Args...>::operator(); + + template <typename R> + constexpr auto operator()(R (*ptr)(Args...)) const noexcept -> decltype(ptr) + { return ptr; } + + template <typename R> + static constexpr auto of(R (*ptr)(Args...)) noexcept -> decltype(ptr) + { return ptr; } +}; + + +template <typename... Args> constexpr QOverload<Args...> qOverload __attribute__((__unused__)) = {}; +template <typename... Args> constexpr QConstOverload<Args...> qConstOverload __attribute__((__unused__)) = {}; +template <typename... Args> constexpr QNonConstOverload<Args...> qNonConstOverload __attribute__((__unused__)) = {}; + + + + + +class QByteArray; +__attribute__((visibility("default"))) QByteArray qgetenv(const char *varName); +__attribute__((visibility("default"))) bool qputenv(const char *varName, const QByteArray& value); +__attribute__((visibility("default"))) bool qunsetenv(const char *varName); + +__attribute__((visibility("default"))) bool qEnvironmentVariableIsEmpty(const char *varName) noexcept; +__attribute__((visibility("default"))) bool qEnvironmentVariableIsSet(const char *varName) noexcept; +__attribute__((visibility("default"))) int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept; + +inline int qIntCast(double f) { return int(f); } +inline int qIntCast(float f) { return int(f); } + + + + +__attribute__((visibility("default"))) void qsrand(uint seed); +__attribute__((visibility("default"))) int qrand(); +# 1112 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" +namespace QtPrivate { + +template <bool B, typename T = void> struct QEnableIf; +template <typename T> struct QEnableIf<true, T> { typedef T Type; }; + +template <bool B, typename T, typename F> struct QConditional { typedef T Type; }; +template <typename T, typename F> struct QConditional<false, T, F> { typedef F Type; }; + +template <typename T> struct QAddConst { typedef const T Type; }; +} + + +template <typename T> +constexpr typename QtPrivate::QAddConst<T>::Type &qAsConst(T &t) noexcept { return t; } + +template <typename T> +void qAsConst(const T &&) = delete; + + + + + +# 1 "../../include/QtCore/qtypeinfo.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 1 +# 1 "../../include/QtCore/qglobal.h" 2 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 + + + + + + + + +namespace QtPrivate { + + + +typedef char small_; + +struct big_ { + char dummy[2]; +}; + + +template <class T> +struct identity_ { + typedef T type; +}; + + + + + + +template<class T, T v> +struct integral_constant { + static const T value = v; + typedef T value_type; + typedef integral_constant<T, v> type; +}; + +template <class T, T v> const T integral_constant<T, v>::value; + + + + + +typedef integral_constant<bool, true> true_type; +typedef integral_constant<bool, false> false_type; +typedef true_type true_; +typedef false_type false_; + + + + +template<bool cond, typename A, typename B> +struct if_{ + typedef A type; +}; + +template<typename A, typename B> +struct if_<false, A, B> { + typedef B type; +}; + + + + + + + +template<typename A, typename B> +struct type_equals_ : public false_ { +}; + +template<typename A> +struct type_equals_<A, A> : public true_ { +}; + + + +template<typename A, typename B> +struct and_ : public integral_constant<bool, (A::value && B::value)> { +}; + + + +template<typename A, typename B> +struct or_ : public integral_constant<bool, (A::value || B::value)> { +}; + +template <class T> struct is_integral; +template <class T> struct is_floating_point; +template <class T> struct is_pointer; + + + +template <class T> struct is_enum; + +template <class T> struct is_reference; +template <class T> struct is_pod; +template <class T> struct has_trivial_constructor; +template <class T> struct has_trivial_copy; +template <class T> struct has_trivial_assign; +template <class T> struct has_trivial_destructor; +template <class T> struct remove_const; +template <class T> struct remove_volatile; +template <class T> struct remove_cv; +template <class T> struct remove_reference; +template <class T> struct add_reference; +template <class T> struct remove_pointer; +template <class T, class U> struct is_same; + +template <class From, class To> struct is_convertible; + + + + +template <class T> struct is_integral : false_type { }; +template<> struct is_integral<bool> : true_type { }; +template<> struct is_integral<char> : true_type { }; +template<> struct is_integral<unsigned char> : true_type { }; +template<> struct is_integral<signed char> : true_type { }; + + + + + + +template<> struct is_integral<wchar_t> : true_type { }; + +template<> struct is_integral<short> : true_type { }; +template<> struct is_integral<unsigned short> : true_type { }; +template<> struct is_integral<int> : true_type { }; +template<> struct is_integral<unsigned int> : true_type { }; +template<> struct is_integral<long> : true_type { }; +template<> struct is_integral<unsigned long> : true_type { }; + + + + +template<> struct is_integral<long long> : true_type { }; +template<> struct is_integral<unsigned long long> : true_type { }; + +template <class T> struct is_integral<const T> : is_integral<T> { }; +template <class T> struct is_integral<volatile T> : is_integral<T> { }; +template <class T> struct is_integral<const volatile T> : is_integral<T> { }; + +template<> struct is_integral<char16_t> : true_type { }; +template<> struct is_integral<char32_t> : true_type { }; + + + + +template <class T> struct is_floating_point : false_type { }; +template<> struct is_floating_point<float> : true_type { }; +template<> struct is_floating_point<double> : true_type { }; +template<> struct is_floating_point<long double> : true_type { }; +template <class T> struct is_floating_point<const T> + : is_floating_point<T> { }; +template <class T> struct is_floating_point<volatile T> + : is_floating_point<T> { }; +template <class T> struct is_floating_point<const volatile T> + : is_floating_point<T> { }; + + + + +template <class T> struct is_pointer : false_type { }; +template <class T> struct is_pointer<T*> : true_type { }; +template <class T> struct is_pointer<const T> : is_pointer<T> { }; +template <class T> struct is_pointer<volatile T> : is_pointer<T> { }; +template <class T> struct is_pointer<const volatile T> : is_pointer<T> { }; + + + +namespace internal { + +template <class T> struct is_class_or_union { + template <class U> static small_ tester(void (U::*)()); + template <class U> static big_ tester(...); + static const bool value = sizeof(tester<T>(0)) == sizeof(small_); +}; + + + +template <bool NotUnum, class T> struct is_enum_impl + : is_convertible<typename add_reference<T>::type, int> { }; + +template <class T> struct is_enum_impl<true, T> : false_type { }; + +} +# 311 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +template <class T> struct is_enum + : internal::is_enum_impl< + is_same<T, void>::value || + is_integral<T>::value || + is_floating_point<T>::value || + is_reference<T>::value || + internal::is_class_or_union<T>::value, + T> { }; + +template <class T> struct is_enum<const T> : is_enum<T> { }; +template <class T> struct is_enum<volatile T> : is_enum<T> { }; +template <class T> struct is_enum<const volatile T> : is_enum<T> { }; + + + + +template<typename T> struct is_reference : false_type {}; +template<typename T> struct is_reference<T&> : true_type {}; + + +template <typename T> struct is_const : false_type {}; +template <typename T> struct is_const<const T> : true_type {}; +template <typename T> struct is_volatile : false_type {}; +template <typename T> struct is_volatile<volatile T> : true_type {}; + + + + + +template <class T> struct is_pod + : integral_constant<bool, (is_integral<T>::value || + is_floating_point<T>::value || + + + is_enum<T>::value || + + is_pointer<T>::value)> { }; +template <class T> struct is_pod<const T> : is_pod<T> { }; +template <class T> struct is_pod<volatile T> : is_pod<T> { }; +template <class T> struct is_pod<const volatile T> : is_pod<T> { }; + + + + + + + +template <class T> struct has_trivial_constructor : is_pod<T> { }; +template <class T, class U> struct has_trivial_constructor<std::pair<T, U> > + : integral_constant<bool, + (has_trivial_constructor<T>::value && + has_trivial_constructor<U>::value)> { }; +template <class A, int N> struct has_trivial_constructor<A[N]> + : has_trivial_constructor<A> { }; +template <class T> struct has_trivial_constructor<const T> + : has_trivial_constructor<T> { }; + + + + + + +template <class T> struct has_trivial_copy : is_pod<T> { }; +template <class T, class U> struct has_trivial_copy<std::pair<T, U> > + : integral_constant<bool, + (has_trivial_copy<T>::value && + has_trivial_copy<U>::value)> { }; +template <class A, int N> struct has_trivial_copy<A[N]> + : has_trivial_copy<A> { }; +template <class T> struct has_trivial_copy<const T> : has_trivial_copy<T> { }; + + + + + +template <class T> struct has_trivial_assign : is_pod<T> { }; +template <class T, class U> struct has_trivial_assign<std::pair<T, U> > + : integral_constant<bool, + (has_trivial_assign<T>::value && + has_trivial_assign<U>::value)> { }; +template <class A, int N> struct has_trivial_assign<A[N]> + : has_trivial_assign<A> { }; + + + + + + +template <class T> struct has_trivial_destructor : is_pod<T> { }; +template <class T, class U> struct has_trivial_destructor<std::pair<T, U> > + : integral_constant<bool, + (has_trivial_destructor<T>::value && + has_trivial_destructor<U>::value)> { }; +template <class A, int N> struct has_trivial_destructor<A[N]> + : has_trivial_destructor<A> { }; +template <class T> struct has_trivial_destructor<const T> + : has_trivial_destructor<T> { }; + + +template<typename T> struct remove_const { typedef T type; }; +template<typename T> struct remove_const<T const> { typedef T type; }; +template<typename T> struct remove_volatile { typedef T type; }; +template<typename T> struct remove_volatile<T volatile> { typedef T type; }; +template<typename T> struct remove_cv { + typedef typename remove_const<typename remove_volatile<T>::type>::type type; +}; + + + +template<typename T> struct remove_reference { typedef T type; }; +template<typename T> struct remove_reference<T&> { typedef T type; }; + +template <typename T> struct add_reference { typedef T& type; }; +template <typename T> struct add_reference<T&> { typedef T& type; }; + + +template<typename T> struct remove_pointer { typedef T type; }; +template<typename T> struct remove_pointer<T*> { typedef T type; }; +template<typename T> struct remove_pointer<T* const> { typedef T type; }; +template<typename T> struct remove_pointer<T* volatile> { typedef T type; }; +template<typename T> struct remove_pointer<T* const volatile> { + typedef T type; }; + + +template<typename T, typename U> struct is_same : public false_type { }; +template<typename T> struct is_same<T, T> : public true_type { }; + + + +namespace internal { +# 451 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +template <typename From, typename To> +struct ConvertHelper { + static small_ Test(To); + static big_ Test(...); + static From Create(); +}; +} + + +template <typename From, typename To> +struct is_convertible + : integral_constant<bool, + sizeof(internal::ConvertHelper<From, To>::Test( + internal::ConvertHelper<From, To>::Create())) + == sizeof(small_)> { +}; + + + + + +template <typename T> +struct not_ + : integral_constant<bool, !T::value> {}; + + +template <bool B> +struct not_c + : integral_constant<bool, !B> {}; + + +template <typename T> +struct is_unsigned + : integral_constant<bool, (T(0) < T(-1))> {}; + + +template <typename T> +struct is_signed + : not_< is_unsigned<T> > {}; + +static_assert(bool(( is_unsigned<quint8>::value)), "( is_unsigned<quint8>::value)"); +static_assert(bool((!is_unsigned<qint8>::value)), "(!is_unsigned<qint8>::value)"); + +static_assert(bool((!is_signed<quint8>::value)), "(!is_signed<quint8>::value)"); +static_assert(bool(( is_signed<qint8>::value)), "( is_signed<qint8>::value)"); + +static_assert(bool(( is_unsigned<quint16>::value)), "( is_unsigned<quint16>::value)"); +static_assert(bool((!is_unsigned<qint16>::value)), "(!is_unsigned<qint16>::value)"); + +static_assert(bool((!is_signed<quint16>::value)), "(!is_signed<quint16>::value)"); +static_assert(bool(( is_signed<qint16>::value)), "( is_signed<qint16>::value)"); + +static_assert(bool(( is_unsigned<quint32>::value)), "( is_unsigned<quint32>::value)"); +static_assert(bool((!is_unsigned<qint32>::value)), "(!is_unsigned<qint32>::value)"); + +static_assert(bool((!is_signed<quint32>::value)), "(!is_signed<quint32>::value)"); +static_assert(bool(( is_signed<qint32>::value)), "( is_signed<qint32>::value)"); + +static_assert(bool(( is_unsigned<quint64>::value)), "( is_unsigned<quint64>::value)"); +static_assert(bool((!is_unsigned<qint64>::value)), "(!is_unsigned<qint64>::value)"); + +static_assert(bool((!is_signed<quint64>::value)), "(!is_signed<quint64>::value)"); +static_assert(bool(( is_signed<qint64>::value)), "( is_signed<qint64>::value)"); + +template<class T = void> struct is_default_constructible; + +template<> struct is_default_constructible<void> +{ +protected: + template<bool> struct test { typedef char type; }; +public: + static bool const value = false; +}; +template<> struct is_default_constructible<>::test<true> { typedef double type; }; + +template<class T> struct is_default_constructible : is_default_constructible<> +{ +private: + template<class U> static typename test<!!sizeof(::new U())>::type sfinae(U*); + template<class U> static char sfinae(...); +public: + static bool const value = sizeof(sfinae<T>(0)) > 1; +}; + + +} + + +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 +# 1 "../../include/QtCore/qisenum.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 2 +# 63 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" + + +# 1 "../../include/QtCore/qisenum.h" 2 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 + + + + + +# 57 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template <typename T> +class QTypeInfo +{ +public: + enum { + isPointer = false, + isIntegral = QtPrivate::is_integral<T>::value, + isComplex = true, + isStatic = true, + isRelocatable = __is_enum(T), + isLarge = (sizeof(T)>sizeof(void*)), + isDummy = false, + sizeOf = sizeof(T) + }; +}; + +template<> +class QTypeInfo<void> +{ +public: + enum { + isPointer = false, + isIntegral = false, + isComplex = false, + isStatic = false, + isRelocatable = false, + isLarge = false, + isDummy = false, + sizeOf = 0 + }; +}; + +template <typename T> +class QTypeInfo<T*> +{ +public: + enum { + isPointer = true, + isIntegral = false, + isComplex = false, + isStatic = false, + isRelocatable = true, + isLarge = false, + isDummy = false, + sizeOf = sizeof(T*) + }; +}; +# 120 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template <typename T, typename = void> +struct QTypeInfoQuery : public QTypeInfo<T> +{ + enum { isRelocatable = !QTypeInfo<T>::isStatic }; +}; + + +template <typename T> +struct QTypeInfoQuery<T, typename QtPrivate::QEnableIf<QTypeInfo<T>::isRelocatable || true>::Type> : public QTypeInfo<T> +{}; +# 151 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template <class T, class T1, class T2 = T1, class T3 = T1, class T4 = T1> +class QTypeInfoMerger +{ +public: + enum { + isComplex = QTypeInfoQuery<T1>::isComplex || QTypeInfoQuery<T2>::isComplex + || QTypeInfoQuery<T3>::isComplex || QTypeInfoQuery<T4>::isComplex, + isStatic = QTypeInfoQuery<T1>::isStatic || QTypeInfoQuery<T2>::isStatic + || QTypeInfoQuery<T3>::isStatic || QTypeInfoQuery<T4>::isStatic, + isRelocatable = QTypeInfoQuery<T1>::isRelocatable && QTypeInfoQuery<T2>::isRelocatable + && QTypeInfoQuery<T3>::isRelocatable && QTypeInfoQuery<T4>::isRelocatable, + isLarge = sizeof(T) > sizeof(void*), + isPointer = false, + isIntegral = false, + isDummy = false, + sizeOf = sizeof(T) + }; +}; +# 188 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template <typename T> class QList; template <typename T> class QTypeInfo< QList<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QList<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QList<T>) }; }; +template <typename T> class QVector; template <typename T> class QTypeInfo< QVector<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QVector<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QVector<T>) }; }; +template <typename T> class QQueue; template <typename T> class QTypeInfo< QQueue<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QQueue<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QQueue<T>) }; }; +template <typename T> class QStack; template <typename T> class QTypeInfo< QStack<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QStack<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QStack<T>) }; }; +template <typename T> class QLinkedList; template <typename T> class QTypeInfo< QLinkedList<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QLinkedList<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QLinkedList<T>) }; }; +template <typename T> class QSet; template <typename T> class QTypeInfo< QSet<T> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isRelocatable = true, isStatic = false, isLarge = (sizeof(QSet<T>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QSet<T>) }; }; +# 216 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template <typename K, typename V> class QMap; template <typename K, typename V> class QTypeInfo< QMap<K, V> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isStatic = (((5<<16)|(7<<8)|(0)) < ((6<<16)|(0<<8)|(0))), isRelocatable = true, isLarge = (sizeof(QMap<K, V>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QMap<K, V>) }; }; +template <typename K, typename V> class QMultiMap; template <typename K, typename V> class QTypeInfo< QMultiMap<K, V> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isStatic = (((5<<16)|(7<<8)|(0)) < ((6<<16)|(0<<8)|(0))), isRelocatable = true, isLarge = (sizeof(QMultiMap<K, V>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QMultiMap<K, V>) }; }; +template <typename K, typename V> class QHash; template <typename K, typename V> class QTypeInfo< QHash<K, V> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isStatic = (((5<<16)|(7<<8)|(0)) < ((6<<16)|(0<<8)|(0))), isRelocatable = true, isLarge = (sizeof(QHash<K, V>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QHash<K, V>) }; }; +template <typename K, typename V> class QMultiHash; template <typename K, typename V> class QTypeInfo< QMultiHash<K, V> > { public: enum { isPointer = false, isIntegral = false, isComplex = true, isStatic = (((5<<16)|(7<<8)|(0)) < ((6<<16)|(0<<8)|(0))), isRelocatable = true, isLarge = (sizeof(QMultiHash<K, V>) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QMultiHash<K, V>) }; }; +# 231 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +enum { + Q_COMPLEX_TYPE = 0, + Q_PRIMITIVE_TYPE = 0x1, + Q_STATIC_TYPE = 0, + Q_MOVABLE_TYPE = 0x2, + Q_DUMMY_TYPE = 0x4, + Q_RELOCATABLE_TYPE = 0x8 +}; +# 262 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template<typename T> class QFlags; +template<typename T> +class QTypeInfo<QFlags<T> > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QFlags<T>)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QFlags<T> >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QFlags<T>) }; static inline const char *name() { return "QFlags<T>"; } }; +# 294 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template<> class QTypeInfo<bool > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(bool)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< bool >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(bool) }; static inline const char *name() { return "bool"; } }; +template<> class QTypeInfo<char > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(char)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< char >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(char) }; static inline const char *name() { return "char"; } }; +template<> class QTypeInfo<signed char > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(signed char)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< signed char >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(signed char) }; static inline const char *name() { return "signed char"; } }; +template<> class QTypeInfo<uchar > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(uchar)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< uchar >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(uchar) }; static inline const char *name() { return "uchar"; } }; +template<> class QTypeInfo<short > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(short)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< short >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(short) }; static inline const char *name() { return "short"; } }; +template<> class QTypeInfo<ushort > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(ushort)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< ushort >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(ushort) }; static inline const char *name() { return "ushort"; } }; +template<> class QTypeInfo<int > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(int)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< int >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(int) }; static inline const char *name() { return "int"; } }; +template<> class QTypeInfo<uint > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(uint)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< uint >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(uint) }; static inline const char *name() { return "uint"; } }; +template<> class QTypeInfo<long > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(long)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< long >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(long) }; static inline const char *name() { return "long"; } }; +template<> class QTypeInfo<ulong > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(ulong)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< ulong >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(ulong) }; static inline const char *name() { return "ulong"; } }; +template<> class QTypeInfo<qint64 > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(qint64)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< qint64 >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(qint64) }; static inline const char *name() { return "qint64"; } }; +template<> class QTypeInfo<quint64 > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(quint64)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< quint64 >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(quint64) }; static inline const char *name() { return "quint64"; } }; +template<> class QTypeInfo<float > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(float)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< float >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(float) }; static inline const char *name() { return "float"; } }; +template<> class QTypeInfo<double > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(double)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< double >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(double) }; static inline const char *name() { return "double"; } }; + +template<> class QTypeInfo<long double > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(long double)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< long double >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(long double) }; static inline const char *name() { return "long double"; } }; +# 325 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +template<> class QTypeInfo<char16_t > { public: enum { isComplex = (((Q_RELOCATABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_RELOCATABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_RELOCATABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(char16_t)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< char16_t >::value, isDummy = (((Q_RELOCATABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(char16_t) }; static inline const char *name() { return "char16_t"; } }; +template<> class QTypeInfo<char32_t > { public: enum { isComplex = (((Q_RELOCATABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_RELOCATABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_RELOCATABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(char32_t)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< char32_t >::value, isDummy = (((Q_RELOCATABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(char32_t) }; static inline const char *name() { return "char32_t"; } }; + + +template<> class QTypeInfo<wchar_t > { public: enum { isComplex = (((Q_RELOCATABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_RELOCATABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_RELOCATABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(wchar_t)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< wchar_t >::value, isDummy = (((Q_RELOCATABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(wchar_t) }; static inline const char *name() { return "wchar_t"; } }; + + + + +# 1 "../../include/QtCore/qtypeinfo.h" 2 +# 1135 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qsysinfo.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qsysinfo.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qsysinfo.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qsysinfo.h" 2 + + + + + + + + + + +class QString; +class __attribute__((visibility("default"))) QSysInfo { +public: + enum Sizes { + WordSize = (sizeof(void *)<<3) + }; +# 67 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qsysinfo.h" + enum Endian { + BigEndian, + LittleEndian + + + + + + + , ByteOrder = LittleEndian + + + + }; + + enum WinVersion { + WV_None = 0x0000, + + WV_32s = 0x0001, + WV_95 = 0x0002, + WV_98 = 0x0003, + WV_Me = 0x0004, + WV_DOS_based= 0x000f, + + + WV_NT = 0x0010, + WV_2000 = 0x0020, + WV_XP = 0x0030, + WV_2003 = 0x0040, + WV_VISTA = 0x0080, + WV_WINDOWS7 = 0x0090, + WV_WINDOWS8 = 0x00a0, + WV_WINDOWS8_1 = 0x00b0, + WV_WINDOWS10 = 0x00c0, + WV_NT_based = 0x00f0, + + + WV_4_0 = WV_NT, + WV_5_0 = WV_2000, + WV_5_1 = WV_XP, + WV_5_2 = WV_2003, + WV_6_0 = WV_VISTA, + WV_6_1 = WV_WINDOWS7, + WV_6_2 = WV_WINDOWS8, + WV_6_3 = WV_WINDOWS8_1, + WV_10_0 = WV_WINDOWS10, + + WV_CE = 0x0100, + WV_CENET = 0x0200, + WV_CE_5 = 0x0300, + WV_CE_6 = 0x0400, + WV_CE_based = 0x0f00 + }; + + + + + static const WinVersion WindowsVersion = WV_None; + static WinVersion windowsVersion() { return WV_None; } + + + + + enum MacVersion { + MV_None = 0xffff, + MV_Unknown = 0x0000, + + + MV_9 = (9 == 10 ? 0 + 2 : (9 == 9 ? 1 : 0)), + MV_10_0 = (10 == 10 ? 0 + 2 : (10 == 9 ? 1 : 0)), + MV_10_1 = (10 == 10 ? 1 + 2 : (10 == 9 ? 1 : 0)), + MV_10_2 = (10 == 10 ? 2 + 2 : (10 == 9 ? 1 : 0)), + MV_10_3 = (10 == 10 ? 3 + 2 : (10 == 9 ? 1 : 0)), + MV_10_4 = (10 == 10 ? 4 + 2 : (10 == 9 ? 1 : 0)), + MV_10_5 = (10 == 10 ? 5 + 2 : (10 == 9 ? 1 : 0)), + MV_10_6 = (10 == 10 ? 6 + 2 : (10 == 9 ? 1 : 0)), + MV_10_7 = (10 == 10 ? 7 + 2 : (10 == 9 ? 1 : 0)), + MV_10_8 = (10 == 10 ? 8 + 2 : (10 == 9 ? 1 : 0)), + MV_10_9 = (10 == 10 ? 9 + 2 : (10 == 9 ? 1 : 0)), + MV_10_10 = (10 == 10 ? 10 + 2 : (10 == 9 ? 1 : 0)), + MV_10_11 = (10 == 10 ? 11 + 2 : (10 == 9 ? 1 : 0)), + + + MV_CHEETAH = MV_10_0, + MV_PUMA = MV_10_1, + MV_JAGUAR = MV_10_2, + MV_PANTHER = MV_10_3, + MV_TIGER = MV_10_4, + MV_LEOPARD = MV_10_5, + MV_SNOWLEOPARD = MV_10_6, + MV_LION = MV_10_7, + MV_MOUNTAINLION = MV_10_8, + MV_MAVERICKS = MV_10_9, + MV_YOSEMITE = MV_10_10, + MV_ELCAPITAN = MV_10_11, + + + MV_IOS = 1 << 8, + MV_IOS_4_3 = (QSysInfo::MV_IOS | 4 << 4 | 3), + MV_IOS_5_0 = (QSysInfo::MV_IOS | 5 << 4 | 0), + MV_IOS_5_1 = (QSysInfo::MV_IOS | 5 << 4 | 1), + MV_IOS_6_0 = (QSysInfo::MV_IOS | 6 << 4 | 0), + MV_IOS_6_1 = (QSysInfo::MV_IOS | 6 << 4 | 1), + MV_IOS_7_0 = (QSysInfo::MV_IOS | 7 << 4 | 0), + MV_IOS_7_1 = (QSysInfo::MV_IOS | 7 << 4 | 1), + MV_IOS_8_0 = (QSysInfo::MV_IOS | 8 << 4 | 0), + MV_IOS_8_1 = (QSysInfo::MV_IOS | 8 << 4 | 1), + MV_IOS_8_2 = (QSysInfo::MV_IOS | 8 << 4 | 2), + MV_IOS_8_3 = (QSysInfo::MV_IOS | 8 << 4 | 3), + MV_IOS_8_4 = (QSysInfo::MV_IOS | 8 << 4 | 4), + MV_IOS_9_0 = (QSysInfo::MV_IOS | 9 << 4 | 0) + }; + + + + + static const MacVersion MacintoshVersion = MV_None; + static MacVersion macVersion() { return MV_None; } + + + static QString buildCpuArchitecture(); + static QString currentCpuArchitecture(); + static QString buildAbi(); + + static QString kernelType(); + static QString kernelVersion(); + static QString productType(); + static QString productVersion(); + static QString prettyProductName(); + + static QString machineHostName(); +}; + + +# 1 "../../include/QtCore/qsysinfo.h" 2 +# 1136 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qlogging.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qlogging.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qlogging.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qlogging.h" 2 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qlogging.h" + + + + + + + +class QDebug; +class QNoDebug; + +enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg }; + +class QMessageLogContext +{ + QMessageLogContext(const QMessageLogContext &) = delete; QMessageLogContext &operator=(const QMessageLogContext &) = delete; +public: + constexpr QMessageLogContext() + : version(2), line(0), file(nullptr), function(nullptr), category(nullptr) {} + constexpr QMessageLogContext(const char *fileName, int lineNumber, const char *functionName, const char *categoryName) + : version(2), line(lineNumber), file(fileName), function(functionName), category(categoryName) {} + + void copy(const QMessageLogContext &logContext); + + int version; + int line; + const char *file; + const char *function; + const char *category; + +private: + friend class QMessageLogger; + friend class QDebug; +}; + +class QLoggingCategory; + +class __attribute__((visibility("default"))) QMessageLogger +{ + QMessageLogger(const QMessageLogger &) = delete; QMessageLogger &operator=(const QMessageLogger &) = delete; +public: + constexpr QMessageLogger() : context() {} + constexpr QMessageLogger(const char *file, int line, const char *function) + : context(file, line, function, "default") {} + constexpr QMessageLogger(const char *file, int line, const char *function, const char *category) + : context(file, line, function, category) {} + + void debug(const char *msg, ...) const __attribute__((format(printf, (2), (3)))); + void noDebug(const char *, ...) const __attribute__((format(printf, (2), (3)))) + {} + void info(const char *msg, ...) const __attribute__((format(printf, (2), (3)))); + void warning(const char *msg, ...) const __attribute__((format(printf, (2), (3)))); + void critical(const char *msg, ...) const __attribute__((format(printf, (2), (3)))); + + typedef const QLoggingCategory &(*CategoryFunction)(); + + void debug(const QLoggingCategory &cat, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void debug(CategoryFunction catFunc, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void info(const QLoggingCategory &cat, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void info(CategoryFunction catFunc, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void warning(const QLoggingCategory &cat, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void warning(CategoryFunction catFunc, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void critical(const QLoggingCategory &cat, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + void critical(CategoryFunction catFunc, const char *msg, ...) const __attribute__((format(printf, (3), (4)))); + + + __attribute__((__noreturn__)) + + void fatal(const char *msg, ...) const noexcept __attribute__((format(printf, (2), (3)))); + + + QDebug debug() const; + QDebug debug(const QLoggingCategory &cat) const; + QDebug debug(CategoryFunction catFunc) const; + QDebug info() const; + QDebug info(const QLoggingCategory &cat) const; + QDebug info(CategoryFunction catFunc) const; + QDebug warning() const; + QDebug warning(const QLoggingCategory &cat) const; + QDebug warning(CategoryFunction catFunc) const; + QDebug critical() const; + QDebug critical(const QLoggingCategory &cat) const; + QDebug critical(CategoryFunction catFunc) const; + + QNoDebug noDebug() const noexcept; + + +private: + QMessageLogContext context; +}; +# 179 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qlogging.h" +__attribute__((visibility("default"))) void qt_message_output(QtMsgType, const QMessageLogContext &context, + const QString &message); + +__attribute__((visibility("default"))) void qErrnoWarning(int code, const char *msg, ...); +__attribute__((visibility("default"))) void qErrnoWarning(const char *msg, ...); + + + + + + +typedef void (*QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QString &); +__attribute__((visibility("default"))) QtMessageHandler qInstallMessageHandler(QtMessageHandler); + +__attribute__((visibility("default"))) void qSetMessagePattern(const QString &messagePattern); +__attribute__((visibility("default"))) QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, + const QString &buf); + + +# 1 "../../include/QtCore/qlogging.h" 2 +# 1137 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 + +# 1 "../../include/QtCore/qflags.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" 2 + + + + +# 1 "../../include/QtCore/qtypeinfo.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 +# 1 "../../include/QtCore/qisenum.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 2 +# 1 "../../include/QtCore/qisenum.h" 2 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 +# 1 "../../include/QtCore/qtypeinfo.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" 2 + + + + + + + +class QFlag +{ + int i; +public: + constexpr inline QFlag(int ai) noexcept : i(ai) {} + constexpr inline operator int() const noexcept { return i; } +# 69 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" + constexpr inline QFlag(uint ai) noexcept : i(int(ai)) {} + constexpr inline QFlag(short ai) noexcept : i(int(ai)) {} + constexpr inline QFlag(ushort ai) noexcept : i(int(uint(ai))) {} + constexpr inline operator uint() const noexcept { return uint(i); } + +}; +template<> class QTypeInfo<QFlag > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QFlag)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QFlag >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QFlag) }; static inline const char *name() { return "QFlag"; } }; + +class QIncompatibleFlag +{ + int i; +public: + constexpr inline explicit QIncompatibleFlag(int i) noexcept; + constexpr inline operator int() const noexcept { return i; } +}; +template<> class QTypeInfo<QIncompatibleFlag > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QIncompatibleFlag)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QIncompatibleFlag >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QIncompatibleFlag) }; static inline const char *name() { return "QIncompatibleFlag"; } }; + +constexpr inline QIncompatibleFlag::QIncompatibleFlag(int ai) noexcept : i(ai) {} + + + + +template<typename Enum> +class QFlags +{ + static_assert(bool((sizeof(Enum) <= sizeof(int))), "QFlags uses an int as storage, so an enum with underlying " "long long will overflow.") + + ; + struct Private; + typedef int (Private::*Zero); +public: + + + + + + typedef typename QtPrivate::if_< + QtPrivate::is_unsigned<Enum>::value, + unsigned int, + signed int + >::type Int; + + typedef Enum enum_type; + + + + + + constexpr inline QFlags(Enum f) noexcept : i(Int(f)) {} + constexpr inline QFlags(Zero = nullptr) noexcept : i(0) {} + constexpr inline QFlags(QFlag f) noexcept : i(f) {} + + + constexpr inline QFlags(std::initializer_list<Enum> flags) noexcept + : i(initializer_list_helper(flags.begin(), flags.end())) {} + + + constexpr inline QFlags &operator&=(int mask) noexcept { i &= mask; return *this; } + constexpr inline QFlags &operator&=(uint mask) noexcept { i &= mask; return *this; } + constexpr inline QFlags &operator&=(Enum mask) noexcept { i &= Int(mask); return *this; } + constexpr inline QFlags &operator|=(QFlags f) noexcept { i |= f.i; return *this; } + constexpr inline QFlags &operator|=(Enum f) noexcept { i |= Int(f); return *this; } + constexpr inline QFlags &operator^=(QFlags f) noexcept { i ^= f.i; return *this; } + constexpr inline QFlags &operator^=(Enum f) noexcept { i ^= Int(f); return *this; } + + constexpr inline operator Int() const noexcept { return i; } + + constexpr inline QFlags operator|(QFlags f) const noexcept { return QFlags(QFlag(i | f.i)); } + constexpr inline QFlags operator|(Enum f) const noexcept { return QFlags(QFlag(i | Int(f))); } + constexpr inline QFlags operator^(QFlags f) const noexcept { return QFlags(QFlag(i ^ f.i)); } + constexpr inline QFlags operator^(Enum f) const noexcept { return QFlags(QFlag(i ^ Int(f))); } + constexpr inline QFlags operator&(int mask) const noexcept { return QFlags(QFlag(i & mask)); } + constexpr inline QFlags operator&(uint mask) const noexcept { return QFlags(QFlag(i & mask)); } + constexpr inline QFlags operator&(Enum f) const noexcept { return QFlags(QFlag(i & Int(f))); } + constexpr inline QFlags operator~() const noexcept { return QFlags(QFlag(~i)); } + + constexpr inline bool operator!() const noexcept { return !i; } + + constexpr inline bool testFlag(Enum f) const noexcept { return (i & Int(f)) == Int(f) && (Int(f) != 0 || i == Int(f) ); } + constexpr inline QFlags &setFlag(Enum f, bool on = true) noexcept + { + return on ? (*this |= f) : (*this &= ~f); + } + +private: + + constexpr static inline Int initializer_list_helper(typename std::initializer_list<Enum>::const_iterator it, + typename std::initializer_list<Enum>::const_iterator end) + noexcept + { + return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); + } + + + Int i; +}; +# 188 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qflags.h" + +# 1 "../../include/QtCore/qflags.h" 2 +# 1139 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 + +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 + + + + +# 1 "../../include/QtCore/qbasicatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" 2 +# 53 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" +# 1 "../../include/QtCore/qatomic_cxx11.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" +# 1 "../../include/QtCore/qgenericatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" 2 +# 1 "../../include/QtCore/qtypeinfo.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 +# 1 "../../include/QtCore/qisenum.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 2 +# 1 "../../include/QtCore/qisenum.h" 2 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypeinfo.h" 2 +# 1 "../../include/QtCore/qtypeinfo.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" 2 + + +# 56 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" +template<int> struct QAtomicOpsSupport { enum { IsSupported = 0 }; }; +template<> struct QAtomicOpsSupport<4> { enum { IsSupported = 1 }; }; + +template <typename T> struct QAtomicAdditiveType +{ + typedef T AdditiveT; + static const int AddScale = 1; +}; +template <typename T> struct QAtomicAdditiveType<T *> +{ + typedef qptrdiff AdditiveT; + static const int AddScale = sizeof(T); +}; + + +template <typename BaseClass> struct QGenericAtomicOps +{ + template <typename T> struct AtomicType { typedef T Type; typedef T *PointerType; }; + + template <typename T> static void acquireMemoryFence(const T &_q_value) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + } + template <typename T> static void releaseMemoryFence(const T &_q_value) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + } + template <typename T> static void orderedMemoryFence(const T &) noexcept + { + } + + template <typename T> static inline __attribute__((always_inline)) + T load(const T &_q_value) noexcept + { + return _q_value; + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + void store(T &_q_value, X newValue) noexcept + { + _q_value = newValue; + } + + template <typename T> static inline __attribute__((always_inline)) + T loadAcquire(const T &_q_value) noexcept + { + T tmp = *static_cast<const volatile T *>(&_q_value); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + void storeRelease(T &_q_value, X newValue) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + *static_cast<volatile T *>(&_q_value) = newValue; + } + + static inline constexpr bool isReferenceCountingNative() noexcept + { return BaseClass::isFetchAndAddNative(); } + static inline constexpr bool isReferenceCountingWaitFree() noexcept + { return BaseClass::isFetchAndAddWaitFree(); } + template <typename T> static inline __attribute__((always_inline)) + bool ref(T &_q_value) noexcept + { + return BaseClass::fetchAndAddRelaxed(_q_value, 1) != T(-1); + } + + template <typename T> static inline __attribute__((always_inline)) + bool deref(T &_q_value) noexcept + { + return BaseClass::fetchAndAddRelaxed(_q_value, -1) != 1; + } +# 141 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qgenericatomic.h" + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetAcquire(T &_q_value, X expectedValue, X newValue) noexcept + { + bool tmp = BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetRelease(T &_q_value, X expectedValue, X newValue) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetAcquire(T &_q_value, X expectedValue, X newValue, X *currentValue) noexcept + { + bool tmp = BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetRelease(T &_q_value, X expectedValue, X newValue, X *currentValue) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue, X *currentValue) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + } + + static inline constexpr bool isFetchAndStoreNative() noexcept { return false; } + static inline constexpr bool isFetchAndStoreWaitFree() noexcept { return false; } + + template <typename T, typename X> static inline __attribute__((always_inline)) + T fetchAndStoreRelaxed(T &_q_value, X newValue) noexcept + { + + for(;;) { + T tmp = load(_q_value); + if (BaseClass::testAndSetRelaxed(_q_value, tmp, newValue)) + return tmp; + } + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + T fetchAndStoreAcquire(T &_q_value, X newValue) noexcept + { + T tmp = BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + T fetchAndStoreRelease(T &_q_value, X newValue) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + } + + template <typename T, typename X> static inline __attribute__((always_inline)) + T fetchAndStoreOrdered(T &_q_value, X newValue) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + } + + static inline constexpr bool isFetchAndAddNative() noexcept { return false; } + static inline constexpr bool isFetchAndAddWaitFree() noexcept { return false; } + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + + for(;;) { + T tmp = BaseClass::load(_q_value); + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp + valueToAdd))) + return tmp; + } + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + T tmp = BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndSubRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT operand) noexcept + { + + return fetchAndAddRelaxed(_q_value, -operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndSubAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT operand) noexcept + { + T tmp = BaseClass::fetchAndSubRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndSubRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT operand) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndSubRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndSubOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT operand) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndSubRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAndRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + + T tmp = BaseClass::load(_q_value); + for(;;) { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp & operand), &tmp)) + return tmp; + } + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAndAcquire(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + T tmp = BaseClass::fetchAndAndRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAndRelease(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndAndRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndAndOrdered(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndAndRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndOrRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + + T tmp = BaseClass::load(_q_value); + for(;;) { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp | operand), &tmp)) + return tmp; + } + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndOrAcquire(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + T tmp = BaseClass::fetchAndOrRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndOrRelease(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndOrRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndOrOrdered(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndOrRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndXorRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + + T tmp = BaseClass::load(_q_value); + for(;;) { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp ^ operand), &tmp)) + return tmp; + } + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndXorAcquire(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + T tmp = BaseClass::fetchAndXorRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndXorRelease(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndXorRelaxed(_q_value, operand); + } + + template <typename T> static inline __attribute__((always_inline)) + T fetchAndXorOrdered(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) noexcept + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndXorRelaxed(_q_value, operand); + } +}; + + +# 1 "../../include/QtCore/qgenericatomic.h" 2 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" 2 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/atomic" 1 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/atomic" 3 + +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/atomic" 3 + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 + +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 55 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 + typedef enum memory_order + { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst + } memory_order; + + enum __memory_order_modifier + { + __memory_order_mask = 0x0ffff, + __memory_order_modifier_mask = 0xffff0000, + __memory_order_hle_acquire = 0x10000, + __memory_order_hle_release = 0x20000 + }; + + constexpr memory_order + operator|(memory_order __m, __memory_order_modifier __mod) + { + return memory_order(__m | int(__mod)); + } + + constexpr memory_order + operator&(memory_order __m, __memory_order_modifier __mod) + { + return memory_order(__m & int(__mod)); + } + + + constexpr memory_order + __cmpexch_failure_order2(memory_order __m) noexcept + { + return __m == memory_order_acq_rel ? memory_order_acquire + : __m == memory_order_release ? memory_order_relaxed : __m; + } + + constexpr memory_order + __cmpexch_failure_order(memory_order __m) noexcept + { + return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) + | (__m & __memory_order_modifier_mask)); + } + + inline __attribute__((__always_inline__)) void + atomic_thread_fence(memory_order __m) noexcept + { __atomic_thread_fence(__m); } + + inline __attribute__((__always_inline__)) void + atomic_signal_fence(memory_order __m) noexcept + { __atomic_signal_fence(__m); } + + + template<typename _Tp> + inline _Tp + kill_dependency(_Tp __y) noexcept + { + _Tp __ret(__y); + return __ret; + } + + + + template<typename _IntTp> + struct __atomic_base; + + + + + template<typename _Tp> + struct atomic; + + template<typename _Tp> + struct atomic<_Tp*>; + + + + typedef bool __atomic_flag_data_type; +# 148 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 + extern "C" { + + struct __atomic_flag_base + { + __atomic_flag_data_type _M_i; + }; + + } + + + + + struct atomic_flag : public __atomic_flag_base + { + atomic_flag() noexcept = default; + ~atomic_flag() noexcept = default; + atomic_flag(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) volatile = delete; + + + constexpr atomic_flag(bool __i) noexcept + : __atomic_flag_base{ _S_init(__i) } + { } + + inline __attribute__((__always_inline__)) bool + test_and_set(memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_test_and_set (&_M_i, __m); + } + + inline __attribute__((__always_inline__)) bool + test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_test_and_set (&_M_i, __m); + } + + inline __attribute__((__always_inline__)) void + clear(memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + ; + + __atomic_clear (&_M_i, __m); + } + + inline __attribute__((__always_inline__)) void + clear(memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + ; + + __atomic_clear (&_M_i, __m); + } + + private: + static constexpr __atomic_flag_data_type + _S_init(bool __i) + { return __i ? 1 : 0; } + }; +# 237 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/atomic_base.h" 3 + template<typename _ITp> + struct __atomic_base + { + private: + typedef _ITp __int_type; + + static constexpr int _S_alignment = + sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); + + alignas(_S_alignment) __int_type _M_i; + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + + constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } + + operator __int_type() const noexcept + { return load(); } + + operator __int_type() const volatile noexcept + { return load(); } + + __int_type + operator=(__int_type __i) noexcept + { + store(__i); + return __i; + } + + __int_type + operator=(__int_type __i) volatile noexcept + { + store(__i); + return __i; + } + + __int_type + operator++(int) noexcept + { return fetch_add(1); } + + __int_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __int_type + operator--(int) noexcept + { return fetch_sub(1); } + + __int_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __int_type + operator++() noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) volatile noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) volatile noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) volatile noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) volatile noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) volatile noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { + + return __atomic_is_lock_free(sizeof(_M_i), + reinterpret_cast<void *>(-__alignof(_M_i))); + } + + bool + is_lock_free() const volatile noexcept + { + + return __atomic_is_lock_free(sizeof(_M_i), + reinterpret_cast<void *>(-__alignof(_M_i))); + } + + inline __attribute__((__always_inline__)) void + store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + ; + + __atomic_store_n(&_M_i, __i, __m); + } + + inline __attribute__((__always_inline__)) void + store(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + ; + + __atomic_store_n(&_M_i, __i, __m); + } + + inline __attribute__((__always_inline__)) __int_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + + return __atomic_load_n(&_M_i, __m); + } + + inline __attribute__((__always_inline__)) __int_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + + return __atomic_load_n(&_M_i, __m); + } + + inline __attribute__((__always_inline__)) __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + + inline __attribute__((__always_inline__)) __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + inline __attribute__((__always_inline__)) __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + + inline __attribute__((__always_inline__)) __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + }; + + + + template<typename _PTp> + struct __atomic_base<_PTp*> + { + private: + typedef _PTp* __pointer_type; + + __pointer_type _M_p; + + + constexpr ptrdiff_t + _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } + + constexpr ptrdiff_t + _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + + constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } + + operator __pointer_type() const noexcept + { return load(); } + + operator __pointer_type() const volatile noexcept + { return load(); } + + __pointer_type + operator=(__pointer_type __p) noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator=(__pointer_type __p) volatile noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator++(int) noexcept + { return fetch_add(1); } + + __pointer_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __pointer_type + operator--(int) noexcept + { return fetch_sub(1); } + + __pointer_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __pointer_type + operator++() noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) volatile noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) volatile noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { + + return __atomic_is_lock_free(sizeof(_M_p), + reinterpret_cast<void *>(-__alignof(_M_p))); + } + + bool + is_lock_free() const volatile noexcept + { + + return __atomic_is_lock_free(sizeof(_M_p), + reinterpret_cast<void *>(-__alignof(_M_p))); + } + + inline __attribute__((__always_inline__)) void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + + ; + ; + ; + + __atomic_store_n(&_M_p, __p, __m); + } + + inline __attribute__((__always_inline__)) void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + ; + + __atomic_store_n(&_M_p, __p, __m); + } + + inline __attribute__((__always_inline__)) __pointer_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + + return __atomic_load_n(&_M_p, __m); + } + + inline __attribute__((__always_inline__)) __pointer_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + ; + ; + + return __atomic_load_n(&_M_p, __m); + } + + inline __attribute__((__always_inline__)) __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + + inline __attribute__((__always_inline__)) __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + inline __attribute__((__always_inline__)) bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + + ; + ; + ; + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + inline __attribute__((__always_inline__)) __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } + + inline __attribute__((__always_inline__)) __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } + + inline __attribute__((__always_inline__)) __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } + + inline __attribute__((__always_inline__)) __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } + }; + + + + +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/atomic" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<typename _Tp> + struct atomic; + + + + template<> + struct atomic<bool> + { + private: + __atomic_base<bool> _M_base; + + public: + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(bool __i) noexcept : _M_base(__i) { } + + bool + operator=(bool __i) noexcept + { return _M_base.operator=(__i); } + + bool + operator=(bool __i) volatile noexcept + { return _M_base.operator=(__i); } + + operator bool() const noexcept + { return _M_base.load(); } + + operator bool() const volatile noexcept + { return _M_base.load(); } + + bool + is_lock_free() const noexcept { return _M_base.is_lock_free(); } + + bool + is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } + + void + store(bool __i, memory_order __m = memory_order_seq_cst) noexcept + { _M_base.store(__i, __m); } + + void + store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept + { _M_base.store(__i, __m); } + + bool + load(memory_order __m = memory_order_seq_cst) const noexcept + { return _M_base.load(__m); } + + bool + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { return _M_base.load(__m); } + + bool + exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.exchange(__i, __m); } + + bool + exchange(bool __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.exchange(__i, __m); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m); } + }; + + + + + + + + template<typename _Tp> + struct atomic + { + private: + + static constexpr int _S_min_alignment + = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 + ? 0 : sizeof(_Tp); + + static constexpr int _S_alignment + = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); + + alignas(_S_alignment) _Tp _M_i; + + static_assert(__is_trivially_copyable(_Tp), + "std::atomic requires a trivially copyable type"); + + static_assert(sizeof(_Tp) > 0, + "Incomplete or zero-sized types are not supported"); + + public: + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(_Tp __i) noexcept : _M_i(__i) { } + + operator _Tp() const noexcept + { return load(); } + + operator _Tp() const volatile noexcept + { return load(); } + + _Tp + operator=(_Tp __i) noexcept + { store(__i); return __i; } + + _Tp + operator=(_Tp __i) volatile noexcept + { store(__i); return __i; } + + bool + is_lock_free() const noexcept + { + + return __atomic_is_lock_free(sizeof(_M_i), + reinterpret_cast<void *>(-__alignof(_M_i))); + } + + bool + is_lock_free() const volatile noexcept + { + + return __atomic_is_lock_free(sizeof(_M_i), + reinterpret_cast<void *>(-__alignof(_M_i))); + } + + void + store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept + { __atomic_store(&_M_i, &__i, __m); } + + void + store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept + { __atomic_store(&_M_i, &__i, __m); } + + _Tp + load(memory_order __m = memory_order_seq_cst) const noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, __m); + return tmp; + } + + _Tp + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, __m); + return tmp; + } + + _Tp + exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, __m); + return tmp; + } + + _Tp + exchange(_Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, __m); + return tmp; + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_weak(__e, __i, __m, + __cmpexch_failure_order(__m)); } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_weak(__e, __i, __m, + __cmpexch_failure_order(__m)); } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_strong(__e, __i, __m, + __cmpexch_failure_order(__m)); } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_strong(__e, __i, __m, + __cmpexch_failure_order(__m)); } + }; + + + + template<typename _Tp> + struct atomic<_Tp*> + { + typedef _Tp* __pointer_type; + typedef __atomic_base<_Tp*> __base_type; + __base_type _M_b; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } + + operator __pointer_type() const noexcept + { return __pointer_type(_M_b); } + + operator __pointer_type() const volatile noexcept + { return __pointer_type(_M_b); } + + __pointer_type + operator=(__pointer_type __p) noexcept + { return _M_b.operator=(__p); } + + __pointer_type + operator=(__pointer_type __p) volatile noexcept + { return _M_b.operator=(__p); } + + __pointer_type + operator++(int) noexcept + { return _M_b++; } + + __pointer_type + operator++(int) volatile noexcept + { return _M_b++; } + + __pointer_type + operator--(int) noexcept + { return _M_b--; } + + __pointer_type + operator--(int) volatile noexcept + { return _M_b--; } + + __pointer_type + operator++() noexcept + { return ++_M_b; } + + __pointer_type + operator++() volatile noexcept + { return ++_M_b; } + + __pointer_type + operator--() noexcept + { return --_M_b; } + + __pointer_type + operator--() volatile noexcept + { return --_M_b; } + + __pointer_type + operator+=(ptrdiff_t __d) noexcept + { return _M_b.operator+=(__d); } + + __pointer_type + operator+=(ptrdiff_t __d) volatile noexcept + { return _M_b.operator+=(__d); } + + __pointer_type + operator-=(ptrdiff_t __d) noexcept + { return _M_b.operator-=(__d); } + + __pointer_type + operator-=(ptrdiff_t __d) volatile noexcept + { return _M_b.operator-=(__d); } + + bool + is_lock_free() const noexcept + { return _M_b.is_lock_free(); } + + bool + is_lock_free() const volatile noexcept + { return _M_b.is_lock_free(); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.store(__p, __m); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.store(__p, __m); } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { return _M_b.load(__m); } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { return _M_b.load(__m); } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.exchange(__p, __m); } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.exchange(__p, __m); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, memory_order __m2) noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_weak(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_weak(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, memory_order __m2) noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) noexcept + { + return _M_b.compare_exchange_strong(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return _M_b.compare_exchange_strong(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.fetch_add(__d, __m); } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.fetch_add(__d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.fetch_sub(__d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.fetch_sub(__d, __m); } + }; + + + + template<> + struct atomic<char> : __atomic_base<char> + { + typedef char __integral_type; + typedef __atomic_base<char> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<signed char> : __atomic_base<signed char> + { + typedef signed char __integral_type; + typedef __atomic_base<signed char> __base_type; + + atomic() noexcept= default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<unsigned char> : __atomic_base<unsigned char> + { + typedef unsigned char __integral_type; + typedef __atomic_base<unsigned char> __base_type; + + atomic() noexcept= default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<short> : __atomic_base<short> + { + typedef short __integral_type; + typedef __atomic_base<short> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<unsigned short> : __atomic_base<unsigned short> + { + typedef unsigned short __integral_type; + typedef __atomic_base<unsigned short> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<int> : __atomic_base<int> + { + typedef int __integral_type; + typedef __atomic_base<int> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<unsigned int> : __atomic_base<unsigned int> + { + typedef unsigned int __integral_type; + typedef __atomic_base<unsigned int> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<long> : __atomic_base<long> + { + typedef long __integral_type; + typedef __atomic_base<long> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<unsigned long> : __atomic_base<unsigned long> + { + typedef unsigned long __integral_type; + typedef __atomic_base<unsigned long> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<long long> : __atomic_base<long long> + { + typedef long long __integral_type; + typedef __atomic_base<long long> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<unsigned long long> : __atomic_base<unsigned long long> + { + typedef unsigned long long __integral_type; + typedef __atomic_base<unsigned long long> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<wchar_t> : __atomic_base<wchar_t> + { + typedef wchar_t __integral_type; + typedef __atomic_base<wchar_t> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<char16_t> : __atomic_base<char16_t> + { + typedef char16_t __integral_type; + typedef __atomic_base<char16_t> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + template<> + struct atomic<char32_t> : __atomic_base<char32_t> + { + typedef char32_t __integral_type; + typedef __atomic_base<char32_t> __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + + typedef atomic<bool> atomic_bool; + + + typedef atomic<char> atomic_char; + + + typedef atomic<signed char> atomic_schar; + + + typedef atomic<unsigned char> atomic_uchar; + + + typedef atomic<short> atomic_short; + + + typedef atomic<unsigned short> atomic_ushort; + + + typedef atomic<int> atomic_int; + + + typedef atomic<unsigned int> atomic_uint; + + + typedef atomic<long> atomic_long; + + + typedef atomic<unsigned long> atomic_ulong; + + + typedef atomic<long long> atomic_llong; + + + typedef atomic<unsigned long long> atomic_ullong; + + + typedef atomic<wchar_t> atomic_wchar_t; + + + typedef atomic<char16_t> atomic_char16_t; + + + typedef atomic<char32_t> atomic_char32_t; + + + + typedef atomic<int_least8_t> atomic_int_least8_t; + + + typedef atomic<uint_least8_t> atomic_uint_least8_t; + + + typedef atomic<int_least16_t> atomic_int_least16_t; + + + typedef atomic<uint_least16_t> atomic_uint_least16_t; + + + typedef atomic<int_least32_t> atomic_int_least32_t; + + + typedef atomic<uint_least32_t> atomic_uint_least32_t; + + + typedef atomic<int_least64_t> atomic_int_least64_t; + + + typedef atomic<uint_least64_t> atomic_uint_least64_t; + + + + typedef atomic<int_fast8_t> atomic_int_fast8_t; + + + typedef atomic<uint_fast8_t> atomic_uint_fast8_t; + + + typedef atomic<int_fast16_t> atomic_int_fast16_t; + + + typedef atomic<uint_fast16_t> atomic_uint_fast16_t; + + + typedef atomic<int_fast32_t> atomic_int_fast32_t; + + + typedef atomic<uint_fast32_t> atomic_uint_fast32_t; + + + typedef atomic<int_fast64_t> atomic_int_fast64_t; + + + typedef atomic<uint_fast64_t> atomic_uint_fast64_t; + + + + typedef atomic<intptr_t> atomic_intptr_t; + + + typedef atomic<uintptr_t> atomic_uintptr_t; + + + typedef atomic<size_t> atomic_size_t; + + + typedef atomic<intmax_t> atomic_intmax_t; + + + typedef atomic<uintmax_t> atomic_uintmax_t; + + + typedef atomic<ptrdiff_t> atomic_ptrdiff_t; + + + + inline bool + atomic_flag_test_and_set_explicit(atomic_flag* __a, + memory_order __m) noexcept + { return __a->test_and_set(__m); } + + inline bool + atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, + memory_order __m) noexcept + { return __a->test_and_set(__m); } + + inline void + atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept + { __a->clear(__m); } + + inline void + atomic_flag_clear_explicit(volatile atomic_flag* __a, + memory_order __m) noexcept + { __a->clear(__m); } + + inline bool + atomic_flag_test_and_set(atomic_flag* __a) noexcept + { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } + + inline bool + atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept + { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } + + inline void + atomic_flag_clear(atomic_flag* __a) noexcept + { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } + + inline void + atomic_flag_clear(volatile atomic_flag* __a) noexcept + { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } + + + + template<typename _ITp> + inline bool + atomic_is_lock_free(const atomic<_ITp>* __a) noexcept + { return __a->is_lock_free(); } + + template<typename _ITp> + inline bool + atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept + { return __a->is_lock_free(); } + + template<typename _ITp> + inline void + atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept + { __a->store(__i, memory_order_relaxed); } + + template<typename _ITp> + inline void + atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept + { __a->store(__i, memory_order_relaxed); } + + template<typename _ITp> + inline void + atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { __a->store(__i, __m); } + + template<typename _ITp> + inline void + atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { __a->store(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept + { return __a->load(__m); } + + template<typename _ITp> + inline _ITp + atomic_load_explicit(const volatile atomic<_ITp>* __a, + memory_order __m) noexcept + { return __a->load(__m); } + + template<typename _ITp> + inline _ITp + atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->exchange(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->exchange(__i, __m); } + + template<typename _ITp> + inline bool + atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } + + template<typename _ITp> + inline bool + atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } + + template<typename _ITp> + inline bool + atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } + + template<typename _ITp> + inline bool + atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } + + + template<typename _ITp> + inline void + atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept + { atomic_store_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline void + atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept + { atomic_store_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_load(const atomic<_ITp>* __a) noexcept + { return atomic_load_explicit(__a, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_load(const volatile atomic<_ITp>* __a) noexcept + { return atomic_load_explicit(__a, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept + { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept + { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline bool + atomic_compare_exchange_weak(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template<typename _ITp> + inline bool + atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template<typename _ITp> + inline bool + atomic_compare_exchange_strong(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template<typename _ITp> + inline bool + atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + + + + + template<typename _ITp> + inline _ITp + atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_add(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_add(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_sub(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_sub(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_and(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_and(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_or(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_or(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_xor(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_xor(__i, __m); } + + template<typename _ITp> + inline _ITp + atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } + + template<typename _ITp> + inline _ITp + atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } + + + + template<typename _ITp> + inline _ITp* + atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_add(__d, __m); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_add(__d, __m); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_add(__d); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_add(__d); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a, + ptrdiff_t __d, memory_order __m) noexcept + { return __a->fetch_sub(__d, __m); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_sub(__d, __m); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_sub(__d); } + + template<typename _ITp> + inline _ITp* + atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_sub(__d); } + + + +} +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" 2 + + +# 72 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" + +# 72 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" +template<> struct QAtomicOpsSupport<1> { enum { IsSupported = 1 }; }; +template<> struct QAtomicOpsSupport<2> { enum { IsSupported = 1 }; }; +template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; +# 96 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/arch/qatomic_cxx11.h" +template <typename X> struct QAtomicOps +{ + typedef std::atomic<X> Type; + + template <typename T> static inline + T load(const std::atomic<T> &_q_value) noexcept + { + return _q_value.load(std::memory_order_relaxed); + } + + template <typename T> static inline + T load(const volatile std::atomic<T> &_q_value) noexcept + { + return _q_value.load(std::memory_order_relaxed); + } + + template <typename T> static inline + T loadAcquire(const std::atomic<T> &_q_value) noexcept + { + return _q_value.load(std::memory_order_acquire); + } + + template <typename T> static inline + T loadAcquire(const volatile std::atomic<T> &_q_value) noexcept + { + return _q_value.load(std::memory_order_acquire); + } + + template <typename T> static inline + void store(std::atomic<T> &_q_value, T newValue) noexcept + { + _q_value.store(newValue, std::memory_order_relaxed); + } + + template <typename T> static inline + void storeRelease(std::atomic<T> &_q_value, T newValue) noexcept + { + _q_value.store(newValue, std::memory_order_release); + } + + static inline constexpr bool isReferenceCountingNative() noexcept { return true; } + static inline constexpr bool isReferenceCountingWaitFree() noexcept { return false; } + template <typename T> + static inline bool ref(std::atomic<T> &_q_value) + { + return ++_q_value != 0; + } + + template <typename T> + static inline bool deref(std::atomic<T> &_q_value) noexcept + { + return --_q_value != 0; + } + + static inline constexpr bool isTestAndSetNative() noexcept { return false; } + static inline constexpr bool isTestAndSetWaitFree() noexcept { return false; } + + template <typename T> + static bool testAndSetRelaxed(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = nullptr) noexcept + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template <typename T> + static bool testAndSetAcquire(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = nullptr) noexcept + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acquire); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template <typename T> + static bool testAndSetRelease(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = nullptr) noexcept + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_release); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template <typename T> + static bool testAndSetOrdered(std::atomic<T> &_q_value, T expectedValue, T newValue, T *currentValue = nullptr) noexcept + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acq_rel); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + static inline constexpr bool isFetchAndStoreNative() noexcept { return false; } + static inline constexpr bool isFetchAndStoreWaitFree() noexcept { return false; } + + template <typename T> + static T fetchAndStoreRelaxed(std::atomic<T> &_q_value, T newValue) noexcept + { + return _q_value.exchange(newValue, std::memory_order_relaxed); + } + + template <typename T> + static T fetchAndStoreAcquire(std::atomic<T> &_q_value, T newValue) noexcept + { + return _q_value.exchange(newValue, std::memory_order_acquire); + } + + template <typename T> + static T fetchAndStoreRelease(std::atomic<T> &_q_value, T newValue) noexcept + { + return _q_value.exchange(newValue, std::memory_order_release); + } + + template <typename T> + static T fetchAndStoreOrdered(std::atomic<T> &_q_value, T newValue) noexcept + { + return _q_value.exchange(newValue, std::memory_order_acq_rel); + } + + static inline constexpr bool isFetchAndAddNative() noexcept { return false; } + static inline constexpr bool isFetchAndAddWaitFree() noexcept { return false; } + + template <typename T> static inline + T fetchAndAddRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_add(valueToAdd, std::memory_order_relaxed); + } + + template <typename T> static inline + T fetchAndAddAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_add(valueToAdd, std::memory_order_acquire); + } + + template <typename T> static inline + T fetchAndAddRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_add(valueToAdd, std::memory_order_release); + } + + template <typename T> static inline + T fetchAndAddOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_add(valueToAdd, std::memory_order_acq_rel); + } + + template <typename T> static inline + T fetchAndSubRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_relaxed); + } + + template <typename T> static inline + T fetchAndSubAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_acquire); + } + + template <typename T> static inline + T fetchAndSubRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_release); + } + + template <typename T> static inline + T fetchAndSubOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_acq_rel); + } + + template <typename T> static inline + T fetchAndAndRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_and(valueToAdd, std::memory_order_relaxed); + } + + template <typename T> static inline + T fetchAndAndAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_and(valueToAdd, std::memory_order_acquire); + } + + template <typename T> static inline + T fetchAndAndRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_and(valueToAdd, std::memory_order_release); + } + + template <typename T> static inline + T fetchAndAndOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_and(valueToAdd, std::memory_order_acq_rel); + } + + template <typename T> static inline + T fetchAndOrRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_or(valueToAdd, std::memory_order_relaxed); + } + + template <typename T> static inline + T fetchAndOrAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_or(valueToAdd, std::memory_order_acquire); + } + + template <typename T> static inline + T fetchAndOrRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_or(valueToAdd, std::memory_order_release); + } + + template <typename T> static inline + T fetchAndOrOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_or(valueToAdd, std::memory_order_acq_rel); + } + + template <typename T> static inline + T fetchAndXorRelaxed(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_relaxed); + } + + template <typename T> static inline + T fetchAndXorAcquire(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_acquire); + } + + template <typename T> static inline + T fetchAndXorRelease(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_release); + } + + template <typename T> static inline + T fetchAndXorOrdered(std::atomic<T> &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) noexcept + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_acq_rel); + } +}; + + + + + + + + +# 1 "../../include/QtCore/qatomic_cxx11.h" 2 +# 54 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" 2 +# 64 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" + +# 86 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qbasicatomic.h" +template <typename T> +class QBasicAtomicInteger +{ +public: + typedef QAtomicOps<T> Ops; + + static_assert(bool(QTypeInfo<T>::isIntegral), "template parameter is not an integral type"); + static_assert(bool(QAtomicOpsSupport<sizeof(T)>::IsSupported), "template parameter is an integral of a size not supported on this platform"); + + typename Ops::Type _q_value; + + + + T load() const noexcept { return Ops::load(_q_value); } + void store(T newValue) noexcept { Ops::store(_q_value, newValue); } + + T loadAcquire() const noexcept { return Ops::loadAcquire(_q_value); } + void storeRelease(T newValue) noexcept { Ops::storeRelease(_q_value, newValue); } + operator T() const noexcept { return loadAcquire(); } + T operator=(T newValue) noexcept { storeRelease(newValue); return newValue; } + + static constexpr bool isReferenceCountingNative() noexcept { return Ops::isReferenceCountingNative(); } + static constexpr bool isReferenceCountingWaitFree() noexcept { return Ops::isReferenceCountingWaitFree(); } + + bool ref() noexcept { return Ops::ref(_q_value); } + bool deref() noexcept { return Ops::deref(_q_value); } + + static constexpr bool isTestAndSetNative() noexcept { return Ops::isTestAndSetNative(); } + static constexpr bool isTestAndSetWaitFree() noexcept { return Ops::isTestAndSetWaitFree(); } + + bool testAndSetRelaxed(T expectedValue, T newValue) noexcept + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); } + bool testAndSetAcquire(T expectedValue, T newValue) noexcept + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); } + bool testAndSetRelease(T expectedValue, T newValue) noexcept + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); } + bool testAndSetOrdered(T expectedValue, T newValue) noexcept + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); } + + bool testAndSetRelaxed(T expectedValue, T newValue, T ¤tValue) noexcept + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetAcquire(T expectedValue, T newValue, T ¤tValue) noexcept + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetRelease(T expectedValue, T newValue, T ¤tValue) noexcept + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetOrdered(T expectedValue, T newValue, T ¤tValue) noexcept + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue, ¤tValue); } + + static constexpr bool isFetchAndStoreNative() noexcept { return Ops::isFetchAndStoreNative(); } + static constexpr bool isFetchAndStoreWaitFree() noexcept { return Ops::isFetchAndStoreWaitFree(); } + + T fetchAndStoreRelaxed(T newValue) noexcept + { return Ops::fetchAndStoreRelaxed(_q_value, newValue); } + T fetchAndStoreAcquire(T newValue) noexcept + { return Ops::fetchAndStoreAcquire(_q_value, newValue); } + T fetchAndStoreRelease(T newValue) noexcept + { return Ops::fetchAndStoreRelease(_q_value, newValue); } + T fetchAndStoreOrdered(T newValue) noexcept + { return Ops::fetchAndStoreOrdered(_q_value, newValue); } + + static constexpr bool isFetchAndAddNative() noexcept { return Ops::isFetchAndAddNative(); } + static constexpr bool isFetchAndAddWaitFree() noexcept { return Ops::isFetchAndAddWaitFree(); } + + T fetchAndAddRelaxed(T valueToAdd) noexcept + { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); } + T fetchAndAddAcquire(T valueToAdd) noexcept + { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); } + T fetchAndAddRelease(T valueToAdd) noexcept + { return Ops::fetchAndAddRelease(_q_value, valueToAdd); } + T fetchAndAddOrdered(T valueToAdd) noexcept + { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } + + T fetchAndSubRelaxed(T valueToAdd) noexcept + { return Ops::fetchAndSubRelaxed(_q_value, valueToAdd); } + T fetchAndSubAcquire(T valueToAdd) noexcept + { return Ops::fetchAndSubAcquire(_q_value, valueToAdd); } + T fetchAndSubRelease(T valueToAdd) noexcept + { return Ops::fetchAndSubRelease(_q_value, valueToAdd); } + T fetchAndSubOrdered(T valueToAdd) noexcept + { return Ops::fetchAndSubOrdered(_q_value, valueToAdd); } + + T fetchAndAndRelaxed(T valueToAdd) noexcept + { return Ops::fetchAndAndRelaxed(_q_value, valueToAdd); } + T fetchAndAndAcquire(T valueToAdd) noexcept + { return Ops::fetchAndAndAcquire(_q_value, valueToAdd); } + T fetchAndAndRelease(T valueToAdd) noexcept + { return Ops::fetchAndAndRelease(_q_value, valueToAdd); } + T fetchAndAndOrdered(T valueToAdd) noexcept + { return Ops::fetchAndAndOrdered(_q_value, valueToAdd); } + + T fetchAndOrRelaxed(T valueToAdd) noexcept + { return Ops::fetchAndOrRelaxed(_q_value, valueToAdd); } + T fetchAndOrAcquire(T valueToAdd) noexcept + { return Ops::fetchAndOrAcquire(_q_value, valueToAdd); } + T fetchAndOrRelease(T valueToAdd) noexcept + { return Ops::fetchAndOrRelease(_q_value, valueToAdd); } + T fetchAndOrOrdered(T valueToAdd) noexcept + { return Ops::fetchAndOrOrdered(_q_value, valueToAdd); } + + T fetchAndXorRelaxed(T valueToAdd) noexcept + { return Ops::fetchAndXorRelaxed(_q_value, valueToAdd); } + T fetchAndXorAcquire(T valueToAdd) noexcept + { return Ops::fetchAndXorAcquire(_q_value, valueToAdd); } + T fetchAndXorRelease(T valueToAdd) noexcept + { return Ops::fetchAndXorRelease(_q_value, valueToAdd); } + T fetchAndXorOrdered(T valueToAdd) noexcept + { return Ops::fetchAndXorOrdered(_q_value, valueToAdd); } + + T operator++() noexcept + { return fetchAndAddOrdered(1) + 1; } + T operator++(int) noexcept + { return fetchAndAddOrdered(1); } + T operator--() noexcept + { return fetchAndSubOrdered(1) - 1; } + T operator--(int) noexcept + { return fetchAndSubOrdered(1); } + + T operator+=(T v) noexcept + { return fetchAndAddOrdered(v) + v; } + T operator-=(T v) noexcept + { return fetchAndSubOrdered(v) - v; } + T operator&=(T v) noexcept + { return fetchAndAndOrdered(v) & v; } + T operator|=(T v) noexcept + { return fetchAndOrOrdered(v) | v; } + T operator^=(T v) noexcept + { return fetchAndXorOrdered(v) ^ v; } + + + + QBasicAtomicInteger() = default; + constexpr QBasicAtomicInteger(T value) noexcept : _q_value(value) {} + QBasicAtomicInteger(const QBasicAtomicInteger &) = delete; + QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) = delete; + QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) volatile = delete; + +}; +typedef QBasicAtomicInteger<int> QBasicAtomicInt; + +template <typename X> +class QBasicAtomicPointer +{ +public: + typedef X *Type; + typedef QAtomicOps<Type> Ops; + typedef typename Ops::Type AtomicType; + + AtomicType _q_value; + + Type load() const noexcept { return _q_value; } + void store(Type newValue) noexcept { _q_value = newValue; } + operator Type() const noexcept { return loadAcquire(); } + Type operator=(Type newValue) noexcept { storeRelease(newValue); return newValue; } + + + Type loadAcquire() const noexcept { return Ops::loadAcquire(_q_value); } + void storeRelease(Type newValue) noexcept { Ops::storeRelease(_q_value, newValue); } + + static constexpr bool isTestAndSetNative() noexcept { return Ops::isTestAndSetNative(); } + static constexpr bool isTestAndSetWaitFree() noexcept { return Ops::isTestAndSetWaitFree(); } + + bool testAndSetRelaxed(Type expectedValue, Type newValue) noexcept + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); } + bool testAndSetAcquire(Type expectedValue, Type newValue) noexcept + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); } + bool testAndSetRelease(Type expectedValue, Type newValue) noexcept + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); } + bool testAndSetOrdered(Type expectedValue, Type newValue) noexcept + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); } + + bool testAndSetRelaxed(Type expectedValue, Type newValue, Type ¤tValue) noexcept + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetAcquire(Type expectedValue, Type newValue, Type ¤tValue) noexcept + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetRelease(Type expectedValue, Type newValue, Type ¤tValue) noexcept + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetOrdered(Type expectedValue, Type newValue, Type ¤tValue) noexcept + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue, ¤tValue); } + + static constexpr bool isFetchAndStoreNative() noexcept { return Ops::isFetchAndStoreNative(); } + static constexpr bool isFetchAndStoreWaitFree() noexcept { return Ops::isFetchAndStoreWaitFree(); } + + Type fetchAndStoreRelaxed(Type newValue) noexcept + { return Ops::fetchAndStoreRelaxed(_q_value, newValue); } + Type fetchAndStoreAcquire(Type newValue) noexcept + { return Ops::fetchAndStoreAcquire(_q_value, newValue); } + Type fetchAndStoreRelease(Type newValue) noexcept + { return Ops::fetchAndStoreRelease(_q_value, newValue); } + Type fetchAndStoreOrdered(Type newValue) noexcept + { return Ops::fetchAndStoreOrdered(_q_value, newValue); } + + static constexpr bool isFetchAndAddNative() noexcept { return Ops::isFetchAndAddNative(); } + static constexpr bool isFetchAndAddWaitFree() noexcept { return Ops::isFetchAndAddWaitFree(); } + + Type fetchAndAddRelaxed(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); } + Type fetchAndAddAcquire(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); } + Type fetchAndAddRelease(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndAddRelease(_q_value, valueToAdd); } + Type fetchAndAddOrdered(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } + + Type fetchAndSubRelaxed(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndSubRelaxed(_q_value, valueToAdd); } + Type fetchAndSubAcquire(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndSubAcquire(_q_value, valueToAdd); } + Type fetchAndSubRelease(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndSubRelease(_q_value, valueToAdd); } + Type fetchAndSubOrdered(qptrdiff valueToAdd) noexcept + { return Ops::fetchAndSubOrdered(_q_value, valueToAdd); } + + Type operator++() noexcept + { return fetchAndAddOrdered(1) + 1; } + Type operator++(int) noexcept + { return fetchAndAddOrdered(1); } + Type operator--() noexcept + { return fetchAndSubOrdered(1) - 1; } + Type operator--(int) noexcept + { return fetchAndSubOrdered(1); } + Type operator+=(qptrdiff valueToAdd) noexcept + { return fetchAndAddOrdered(valueToAdd) + valueToAdd; } + Type operator-=(qptrdiff valueToSub) noexcept + { return fetchAndSubOrdered(valueToSub) - valueToSub; } + + + QBasicAtomicPointer() = default; + constexpr QBasicAtomicPointer(Type value) noexcept : _q_value(value) {} + QBasicAtomicPointer(const QBasicAtomicPointer &) = delete; + QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete; + QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) volatile = delete; + +}; + + + + + + +# 1 "../../include/QtCore/qbasicatomic.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 + + + + +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +#pragma GCC diagnostic push +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" + + +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +#pragma GCC diagnostic ignored "-Wextra" +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" + + + +template <typename T> +class QAtomicInteger : public QBasicAtomicInteger<T> +{ +public: + + + constexpr QAtomicInteger(T value = 0) noexcept : QBasicAtomicInteger<T>(value) {} + + + + + + + + inline QAtomicInteger(const QAtomicInteger &other) noexcept + + : QBasicAtomicInteger<T>() + + { + this->storeRelease(other.loadAcquire()); + } + + inline QAtomicInteger &operator=(const QAtomicInteger &other) noexcept + { + this->storeRelease(other.loadAcquire()); + return *this; + } +# 151 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +}; + +class QAtomicInt : public QAtomicInteger<int> +{ +public: + + + + + constexpr + + QAtomicInt(int value = 0) noexcept : QAtomicInteger<int>(value) {} +}; + + +template <typename T> +class QAtomicPointer : public QBasicAtomicPointer<T> +{ +public: + + constexpr QAtomicPointer(T *value = 0) noexcept : QBasicAtomicPointer<T>(value) {} + + + + + + + inline QAtomicPointer(const QAtomicPointer<T> &other) noexcept + { + this->storeRelease(other.loadAcquire()); + } + + inline QAtomicPointer<T> &operator=(const QAtomicPointer<T> &other) noexcept + { + this->storeRelease(other.loadAcquire()); + return *this; + } +# 219 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +}; + + +# 221 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +#pragma GCC diagnostic pop +# 221 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" + +# 233 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +template <typename T> +inline void qAtomicAssign(T *&d, T *x) +{ + if (d == x) + return; + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} +# 252 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +template <typename T> +inline void qAtomicDetach(T *&d) +{ + if (d->ref.load() == 1) + return; + T *x = d; + d = new T(*d); + if (!x->ref.deref()) + delete x; +} + + +# 1 "../../include/QtCore/qatomic.h" 2 +# 1141 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qglobalstatic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" 2 + + + + +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" 2 + + + +namespace QtGlobalStatic { +enum GuardValues { + Destroyed = -2, + Initialized = -1, + Uninitialized = 0, + Initializing = 1 +}; +} +# 127 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" +template <typename T, T *(&innerFunction)(), QBasicAtomicInt &guard> +struct QGlobalStatic +{ + typedef T Type; + + bool isDestroyed() const { return guard.load() <= QtGlobalStatic::Destroyed; } + bool exists() const { return guard.load() == QtGlobalStatic::Initialized; } + operator Type *() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator()() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator->() + { + do { } while ((false) && (!isDestroyed())); + return innerFunction(); + } + Type &operator*() + { + do { } while ((false) && (!isDestroyed())); + return *innerFunction(); + } +}; +# 161 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobalstatic.h" + +# 1 "../../include/QtCore/qglobalstatic.h" 2 +# 1142 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qnumeric.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnumeric.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnumeric.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnumeric.h" 2 + + + + +__attribute__((visibility("default"))) bool qIsInf(double d); +__attribute__((visibility("default"))) bool qIsNaN(double d); +__attribute__((visibility("default"))) bool qIsFinite(double d); +__attribute__((visibility("default"))) bool qIsInf(float f); +__attribute__((visibility("default"))) bool qIsNaN(float f); +__attribute__((visibility("default"))) bool qIsFinite(float f); +__attribute__((visibility("default"))) double qSNaN(); +__attribute__((visibility("default"))) double qQNaN(); +__attribute__((visibility("default"))) double qInf(); + +__attribute__((visibility("default"))) quint32 qFloatDistance(float a, float b); +__attribute__((visibility("default"))) quint64 qFloatDistance(double a, double b); + + + + + + +# 1 "../../include/QtCore/qnumeric.h" 2 +# 1143 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qversiontagging.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qversiontagging.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qversiontagging.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qversiontagging.h" 2 + + + + + +# 88 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qversiontagging.h" + +# 1 "../../include/QtCore/qversiontagging.h" 2 +# 1144 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qglobal.h" 2 +# 1 "../../include/QtCore/qglobal.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonvalue.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +# 1 "../../include/QtCore/qchar.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qchar.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qchar.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qchar.h" 2 + + + + +class QString; + +struct QLatin1Char +{ +public: + constexpr inline explicit QLatin1Char(char c) noexcept : ch(c) {} + constexpr inline char toLatin1() const noexcept { return ch; } + constexpr inline ushort unicode() const noexcept { return ushort(uchar(ch)); } + +private: + char ch; +}; + + +class __attribute__((visibility("default"))) QChar { +public: + enum SpecialCharacter { + Null = 0x0000, + Tabulation = 0x0009, + LineFeed = 0x000a, + CarriageReturn = 0x000d, + Space = 0x0020, + Nbsp = 0x00a0, + SoftHyphen = 0x00ad, + ReplacementCharacter = 0xfffd, + ObjectReplacementCharacter = 0xfffc, + ByteOrderMark = 0xfeff, + ByteOrderSwapped = 0xfffe, + ParagraphSeparator = 0x2029, + LineSeparator = 0x2028, + LastValidCodePoint = 0x10ffff + }; + + constexpr QChar() noexcept : ucs(0) {} + constexpr QChar(ushort rc) noexcept : ucs(rc) {} + constexpr QChar(uchar c, uchar r) noexcept : ucs(ushort((r << 8) | c)) {} + constexpr QChar(short rc) noexcept : ucs(ushort(rc)) {} + constexpr QChar(uint rc) noexcept : ucs(ushort(rc & 0xffff)) {} + constexpr QChar(int rc) noexcept : ucs(ushort(rc & 0xffff)) {} + constexpr QChar(SpecialCharacter s) noexcept : ucs(ushort(s)) {} + constexpr QChar(QLatin1Char ch) noexcept : ucs(ch.unicode()) {} + + + __attribute__ ((__deprecated__)) constexpr explicit QChar(char c) noexcept : ucs(uchar(c)) { } + + __attribute__ ((__deprecated__)) constexpr explicit QChar(uchar c) noexcept : ucs(c) { } + + + + + enum Category + { + Mark_NonSpacing, + Mark_SpacingCombining, + Mark_Enclosing, + + Number_DecimalDigit, + Number_Letter, + Number_Other, + + Separator_Space, + Separator_Line, + Separator_Paragraph, + + Other_Control, + Other_Format, + Other_Surrogate, + Other_PrivateUse, + Other_NotAssigned, + + Letter_Uppercase, + Letter_Lowercase, + Letter_Titlecase, + Letter_Modifier, + Letter_Other, + + Punctuation_Connector, + Punctuation_Dash, + Punctuation_Open, + Punctuation_Close, + Punctuation_InitialQuote, + Punctuation_FinalQuote, + Punctuation_Other, + + Symbol_Math, + Symbol_Currency, + Symbol_Modifier, + Symbol_Other + }; + + enum Script + { + Script_Unknown, + Script_Inherited, + Script_Common, + + Script_Latin, + Script_Greek, + Script_Cyrillic, + Script_Armenian, + Script_Hebrew, + Script_Arabic, + Script_Syriac, + Script_Thaana, + Script_Devanagari, + Script_Bengali, + Script_Gurmukhi, + Script_Gujarati, + Script_Oriya, + Script_Tamil, + Script_Telugu, + Script_Kannada, + Script_Malayalam, + Script_Sinhala, + Script_Thai, + Script_Lao, + Script_Tibetan, + Script_Myanmar, + Script_Georgian, + Script_Hangul, + Script_Ethiopic, + Script_Cherokee, + Script_CanadianAboriginal, + Script_Ogham, + Script_Runic, + Script_Khmer, + Script_Mongolian, + Script_Hiragana, + Script_Katakana, + Script_Bopomofo, + Script_Han, + Script_Yi, + Script_OldItalic, + Script_Gothic, + Script_Deseret, + Script_Tagalog, + Script_Hanunoo, + Script_Buhid, + Script_Tagbanwa, + Script_Coptic, + + + Script_Limbu, + Script_TaiLe, + Script_LinearB, + Script_Ugaritic, + Script_Shavian, + Script_Osmanya, + Script_Cypriot, + Script_Braille, + + + Script_Buginese, + Script_NewTaiLue, + Script_Glagolitic, + Script_Tifinagh, + Script_SylotiNagri, + Script_OldPersian, + Script_Kharoshthi, + + + Script_Balinese, + Script_Cuneiform, + Script_Phoenician, + Script_PhagsPa, + Script_Nko, + + + Script_Sundanese, + Script_Lepcha, + Script_OlChiki, + Script_Vai, + Script_Saurashtra, + Script_KayahLi, + Script_Rejang, + Script_Lycian, + Script_Carian, + Script_Lydian, + Script_Cham, + + + Script_TaiTham, + Script_TaiViet, + Script_Avestan, + Script_EgyptianHieroglyphs, + Script_Samaritan, + Script_Lisu, + Script_Bamum, + Script_Javanese, + Script_MeeteiMayek, + Script_ImperialAramaic, + Script_OldSouthArabian, + Script_InscriptionalParthian, + Script_InscriptionalPahlavi, + Script_OldTurkic, + Script_Kaithi, + + + Script_Batak, + Script_Brahmi, + Script_Mandaic, + + + Script_Chakma, + Script_MeroiticCursive, + Script_MeroiticHieroglyphs, + Script_Miao, + Script_Sharada, + Script_SoraSompeng, + Script_Takri, + + + Script_CaucasianAlbanian, + Script_BassaVah, + Script_Duployan, + Script_Elbasan, + Script_Grantha, + Script_PahawhHmong, + Script_Khojki, + Script_LinearA, + Script_Mahajani, + Script_Manichaean, + Script_MendeKikakui, + Script_Modi, + Script_Mro, + Script_OldNorthArabian, + Script_Nabataean, + Script_Palmyrene, + Script_PauCinHau, + Script_OldPermic, + Script_PsalterPahlavi, + Script_Siddham, + Script_Khudawadi, + Script_Tirhuta, + Script_WarangCiti, + + + Script_Ahom, + Script_AnatolianHieroglyphs, + Script_Hatran, + Script_Multani, + Script_OldHungarian, + Script_SignWriting, + + ScriptCount + }; + + enum Direction + { + DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, + DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN, + DirLRI, DirRLI, DirFSI, DirPDI + }; + + enum Decomposition + { + NoDecomposition, + Canonical, + Font, + NoBreak, + Initial, + Medial, + Final, + Isolated, + Circle, + Super, + Sub, + Vertical, + Wide, + Narrow, + Small, + Square, + Compat, + Fraction + }; + + enum JoiningType { + Joining_None, + Joining_Causing, + Joining_Dual, + Joining_Right, + Joining_Left, + Joining_Transparent + }; + + + enum Joining + { + OtherJoining, Dual, Right, Center + }; + + + enum CombiningClass + { + Combining_BelowLeftAttached = 200, + Combining_BelowAttached = 202, + Combining_BelowRightAttached = 204, + Combining_LeftAttached = 208, + Combining_RightAttached = 210, + Combining_AboveLeftAttached = 212, + Combining_AboveAttached = 214, + Combining_AboveRightAttached = 216, + + Combining_BelowLeft = 218, + Combining_Below = 220, + Combining_BelowRight = 222, + Combining_Left = 224, + Combining_Right = 226, + Combining_AboveLeft = 228, + Combining_Above = 230, + Combining_AboveRight = 232, + + Combining_DoubleBelow = 233, + Combining_DoubleAbove = 234, + Combining_IotaSubscript = 240 + }; + + enum UnicodeVersion { + Unicode_Unassigned, + Unicode_1_1, + Unicode_2_0, + Unicode_2_1_2, + Unicode_3_0, + Unicode_3_1, + Unicode_3_2, + Unicode_4_0, + Unicode_4_1, + Unicode_5_0, + Unicode_5_1, + Unicode_5_2, + Unicode_6_0, + Unicode_6_1, + Unicode_6_2, + Unicode_6_3, + Unicode_7_0, + Unicode_8_0 + }; + + + inline Category category() const noexcept { return QChar::category(ucs); } + inline Direction direction() const noexcept { return QChar::direction(ucs); } + inline JoiningType joiningType() const noexcept { return QChar::joiningType(ucs); } + + __attribute__ ((__deprecated__)) inline Joining joining() const noexcept + { + switch (QChar::joiningType(ucs)) { + case QChar::Joining_Causing: return QChar::Center; + case QChar::Joining_Dual: return QChar::Dual; + case QChar::Joining_Right: return QChar::Right; + case QChar::Joining_None: + case QChar::Joining_Left: + case QChar::Joining_Transparent: + default: return QChar::OtherJoining; + } + } + + inline unsigned char combiningClass() const noexcept { return QChar::combiningClass(ucs); } + + inline QChar mirroredChar() const noexcept { return QChar::mirroredChar(ucs); } + inline bool hasMirrored() const noexcept { return QChar::hasMirrored(ucs); } + + QString decomposition() const; + inline Decomposition decompositionTag() const noexcept { return QChar::decompositionTag(ucs); } + + inline int digitValue() const noexcept { return QChar::digitValue(ucs); } + inline QChar toLower() const noexcept { return QChar::toLower(ucs); } + inline QChar toUpper() const noexcept { return QChar::toUpper(ucs); } + inline QChar toTitleCase() const noexcept { return QChar::toTitleCase(ucs); } + inline QChar toCaseFolded() const noexcept { return QChar::toCaseFolded(ucs); } + + inline Script script() const noexcept { return QChar::script(ucs); } + + inline UnicodeVersion unicodeVersion() const noexcept { return QChar::unicodeVersion(ucs); } + + + + + constexpr inline char toLatin1() const noexcept { return ucs > 0xff ? '\0' : char(ucs); } + constexpr inline ushort unicode() const noexcept { return ucs; } + constexpr inline ushort &unicode() noexcept { return ucs; } + + + + + + static constexpr inline QChar fromLatin1(char c) noexcept { return QChar(ushort(uchar(c))); } + + constexpr inline bool isNull() const noexcept { return ucs == 0; } + + inline bool isPrint() const noexcept { return QChar::isPrint(ucs); } + constexpr inline bool isSpace() const noexcept { return QChar::isSpace(ucs); } + inline bool isMark() const noexcept { return QChar::isMark(ucs); } + inline bool isPunct() const noexcept { return QChar::isPunct(ucs); } + inline bool isSymbol() const noexcept { return QChar::isSymbol(ucs); } + constexpr inline bool isLetter() const noexcept { return QChar::isLetter(ucs); } + constexpr inline bool isNumber() const noexcept { return QChar::isNumber(ucs); } + constexpr inline bool isLetterOrNumber() const noexcept { return QChar::isLetterOrNumber(ucs); } + constexpr inline bool isDigit() const noexcept { return QChar::isDigit(ucs); } + constexpr inline bool isLower() const noexcept { return QChar::isLower(ucs); } + constexpr inline bool isUpper() const noexcept { return QChar::isUpper(ucs); } + constexpr inline bool isTitleCase() const noexcept { return QChar::isTitleCase(ucs); } + + constexpr inline bool isNonCharacter() const noexcept { return QChar::isNonCharacter(ucs); } + constexpr inline bool isHighSurrogate() const noexcept { return QChar::isHighSurrogate(ucs); } + constexpr inline bool isLowSurrogate() const noexcept { return QChar::isLowSurrogate(ucs); } + constexpr inline bool isSurrogate() const noexcept { return QChar::isSurrogate(ucs); } + + constexpr inline uchar cell() const noexcept { return uchar(ucs & 0xff); } + constexpr inline uchar row() const noexcept { return uchar((ucs>>8)&0xff); } + constexpr inline void setCell(uchar acell) noexcept { ucs = ushort((ucs & 0xff00) + acell); } + constexpr inline void setRow(uchar arow) noexcept { ucs = ushort((ushort(arow)<<8) + (ucs&0xff)); } + + static constexpr inline bool isNonCharacter(uint ucs4) noexcept + { + return ucs4 >= 0xfdd0 && (ucs4 <= 0xfdef || (ucs4 & 0xfffe) == 0xfffe); + } + static constexpr inline bool isHighSurrogate(uint ucs4) noexcept + { + return ((ucs4 & 0xfffffc00) == 0xd800); + } + static constexpr inline bool isLowSurrogate(uint ucs4) noexcept + { + return ((ucs4 & 0xfffffc00) == 0xdc00); + } + static constexpr inline bool isSurrogate(uint ucs4) noexcept + { + return (ucs4 - 0xd800u < 2048u); + } + static constexpr inline bool requiresSurrogates(uint ucs4) noexcept + { + return (ucs4 >= 0x10000); + } + static constexpr inline uint surrogateToUcs4(ushort high, ushort low) noexcept + { + return (uint(high)<<10) + low - 0x35fdc00; + } + static constexpr inline uint surrogateToUcs4(QChar high, QChar low) noexcept + { + return surrogateToUcs4(high.ucs, low.ucs); + } + static constexpr inline ushort highSurrogate(uint ucs4) noexcept + { + return ushort((ucs4>>10) + 0xd7c0); + } + static constexpr inline ushort lowSurrogate(uint ucs4) noexcept + { + return ushort(ucs4%0x400 + 0xdc00); + } + + static Category category(uint ucs4) noexcept __attribute__((const)); + static Direction direction(uint ucs4) noexcept __attribute__((const)); + static JoiningType joiningType(uint ucs4) noexcept __attribute__((const)); + + __attribute__ ((__deprecated__)) static Joining joining(uint ucs4) noexcept __attribute__((const)); + + static unsigned char combiningClass(uint ucs4) noexcept __attribute__((const)); + + static uint mirroredChar(uint ucs4) noexcept __attribute__((const)); + static bool hasMirrored(uint ucs4) noexcept __attribute__((const)); + + static QString decomposition(uint ucs4); + static Decomposition decompositionTag(uint ucs4) noexcept __attribute__((const)); + + static int digitValue(uint ucs4) noexcept __attribute__((const)); + static uint toLower(uint ucs4) noexcept __attribute__((const)); + static uint toUpper(uint ucs4) noexcept __attribute__((const)); + static uint toTitleCase(uint ucs4) noexcept __attribute__((const)); + static uint toCaseFolded(uint ucs4) noexcept __attribute__((const)); + + static Script script(uint ucs4) noexcept __attribute__((const)); + + static UnicodeVersion unicodeVersion(uint ucs4) noexcept __attribute__((const)); + + static UnicodeVersion currentUnicodeVersion() noexcept __attribute__((const)); + + static bool isPrint(uint ucs4) noexcept __attribute__((const)); + static constexpr inline bool isSpace(uint ucs4) noexcept __attribute__((const)) + { + + return ucs4 == 0x20 || (ucs4 <= 0x0d && ucs4 >= 0x09) + || (ucs4 > 127 && (ucs4 == 0x85 || ucs4 == 0xa0 || QChar::isSpace_helper(ucs4))); + } + static bool isMark(uint ucs4) noexcept __attribute__((const)); + static bool isPunct(uint ucs4) noexcept __attribute__((const)); + static bool isSymbol(uint ucs4) noexcept __attribute__((const)); + static constexpr inline bool isLetter(uint ucs4) noexcept __attribute__((const)) + { + return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) + || (ucs4 > 127 && QChar::isLetter_helper(ucs4)); + } + static constexpr inline bool isNumber(uint ucs4) noexcept __attribute__((const)) + { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::isNumber_helper(ucs4)); } + static constexpr inline bool isLetterOrNumber(uint ucs4) noexcept __attribute__((const)) + { + return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) + || (ucs4 >= '0' && ucs4 <= '9') + || (ucs4 > 127 && QChar::isLetterOrNumber_helper(ucs4)); + } + static constexpr inline bool isDigit(uint ucs4) noexcept __attribute__((const)) + { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::category(ucs4) == Number_DecimalDigit); } + static constexpr inline bool isLower(uint ucs4) noexcept __attribute__((const)) + { return (ucs4 <= 'z' && ucs4 >= 'a') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Lowercase); } + static constexpr inline bool isUpper(uint ucs4) noexcept __attribute__((const)) + { return (ucs4 <= 'Z' && ucs4 >= 'A') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Uppercase); } + static constexpr inline bool isTitleCase(uint ucs4) noexcept __attribute__((const)) + { return ucs4 > 127 && QChar::category(ucs4) == Letter_Titlecase; } + +private: + static bool isSpace_helper(uint ucs4) noexcept __attribute__((const)); + static bool isLetter_helper(uint ucs4) noexcept __attribute__((const)); + static bool isNumber_helper(uint ucs4) noexcept __attribute__((const)); + static bool isLetterOrNumber_helper(uint ucs4) noexcept __attribute__((const)); + + + + + + + friend constexpr bool operator==(QChar, QChar) noexcept; + friend constexpr bool operator< (QChar, QChar) noexcept; + ushort ucs; +}; + +template<> class QTypeInfo<QChar > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QChar)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QChar >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QChar) }; static inline const char *name() { return "QChar"; } }; + +constexpr inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; } +constexpr inline bool operator< (QChar c1, QChar c2) noexcept { return c1.ucs < c2.ucs; } + +constexpr inline bool operator!=(QChar c1, QChar c2) noexcept { return !operator==(c1, c2); } +constexpr inline bool operator>=(QChar c1, QChar c2) noexcept { return !operator< (c1, c2); } +constexpr inline bool operator> (QChar c1, QChar c2) noexcept { return operator< (c2, c1); } +constexpr inline bool operator<=(QChar c1, QChar c2) noexcept { return !operator< (c2, c1); } + + +__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, QChar); +__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QChar &); + + + +# 1 "../../include/QtCore/qchar.h" 2 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" +# 1 "../../include/QtCore/qrefcount.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qrefcount.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qrefcount.h" +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qrefcount.h" 2 + + + + +namespace QtPrivate +{ + +class RefCount +{ +public: + inline bool ref() noexcept { + int count = atomic.load(); + + if (count == 0) + return false; + + if (count != -1) + atomic.ref(); + return true; + } + + inline bool deref() noexcept { + int count = atomic.load(); + + if (count == 0) + return false; + + if (count == -1) + return true; + return atomic.deref(); + } + + + bool setSharable(bool sharable) noexcept + { + do { } while ((false) && (!isShared())); + if (sharable) + return atomic.testAndSetRelaxed(0, 1); + else + return atomic.testAndSetRelaxed(1, 0); + } + + bool isSharable() const noexcept + { + + return atomic.load() != 0; + } + + + bool isStatic() const noexcept + { + + return atomic.load() == -1; + } + + bool isShared() const noexcept + { + int count = atomic.load(); + return (count != 1) && (count != 0); + } + + void initializeOwned() noexcept { atomic.store(1); } + void initializeUnsharable() noexcept { atomic.store(0); } + + QBasicAtomicInt atomic; +}; + +} + + + + +# 1 "../../include/QtCore/qrefcount.h" 2 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 +# 1 "../../include/QtCore/qnamespace.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnamespace.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnamespace.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnamespace.h" 2 + + + + + + + + +struct QMetaObject; +const QMetaObject *qt_getQtMetaObject() noexcept; +# 64 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnamespace.h" +namespace + + + +Qt { + + + + + + + enum GlobalColor { + color0, + color1, + black, + white, + darkGray, + gray, + lightGray, + red, + green, + blue, + cyan, + magenta, + yellow, + darkRed, + darkGreen, + darkBlue, + darkCyan, + darkMagenta, + darkYellow, + transparent + }; + + enum KeyboardModifier { + NoModifier = 0x00000000, + ShiftModifier = 0x02000000, + ControlModifier = 0x04000000, + AltModifier = 0x08000000, + MetaModifier = 0x10000000, + KeypadModifier = 0x20000000, + GroupSwitchModifier = 0x40000000, + + KeyboardModifierMask = 0xfe000000 + }; + typedef QFlags<KeyboardModifier> KeyboardModifiers; + + + + + + + enum Modifier { + META = Qt::MetaModifier, + SHIFT = Qt::ShiftModifier, + CTRL = Qt::ControlModifier, + ALT = Qt::AltModifier, + MODIFIER_MASK = KeyboardModifierMask, + UNICODE_ACCEL = 0x00000000 + }; + + enum MouseButton { + NoButton = 0x00000000, + LeftButton = 0x00000001, + RightButton = 0x00000002, + MidButton = 0x00000004, + MiddleButton = MidButton, + BackButton = 0x00000008, + XButton1 = BackButton, + ExtraButton1 = XButton1, + ForwardButton = 0x00000010, + XButton2 = ForwardButton, + ExtraButton2 = ForwardButton, + TaskButton = 0x00000020, + ExtraButton3 = TaskButton, + ExtraButton4 = 0x00000040, + ExtraButton5 = 0x00000080, + ExtraButton6 = 0x00000100, + ExtraButton7 = 0x00000200, + ExtraButton8 = 0x00000400, + ExtraButton9 = 0x00000800, + ExtraButton10 = 0x00001000, + ExtraButton11 = 0x00002000, + ExtraButton12 = 0x00004000, + ExtraButton13 = 0x00008000, + ExtraButton14 = 0x00010000, + ExtraButton15 = 0x00020000, + ExtraButton16 = 0x00040000, + ExtraButton17 = 0x00080000, + ExtraButton18 = 0x00100000, + ExtraButton19 = 0x00200000, + ExtraButton20 = 0x00400000, + ExtraButton21 = 0x00800000, + ExtraButton22 = 0x01000000, + ExtraButton23 = 0x02000000, + ExtraButton24 = 0x04000000, + AllButtons = 0x07ffffff, + MaxMouseButton = ExtraButton24, + + MouseButtonMask = 0xffffffff + }; + typedef QFlags<MouseButton> MouseButtons; + + enum Orientation { + Horizontal = 0x1, + Vertical = 0x2 + }; + + typedef QFlags<Orientation> Orientations; + + enum FocusPolicy { + NoFocus = 0, + TabFocus = 0x1, + ClickFocus = 0x2, + StrongFocus = TabFocus | ClickFocus | 0x8, + WheelFocus = StrongFocus | 0x4 + }; + + enum TabFocusBehavior { + NoTabFocus = 0x00, + TabFocusTextControls = 0x01, + TabFocusListControls = 0x02, + TabFocusAllControls = 0xff + }; + + enum SortOrder { + AscendingOrder, + DescendingOrder + }; + + enum TileRule { + StretchTile, + RepeatTile, + RoundTile + }; + + + + + + enum AlignmentFlag { + AlignLeft = 0x0001, + AlignLeading = AlignLeft, + AlignRight = 0x0002, + AlignTrailing = AlignRight, + AlignHCenter = 0x0004, + AlignJustify = 0x0008, + AlignAbsolute = 0x0010, + AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute, + + AlignTop = 0x0020, + AlignBottom = 0x0040, + AlignVCenter = 0x0080, + AlignBaseline = 0x0100, + + + + + AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter | AlignBaseline, + + AlignCenter = AlignVCenter | AlignHCenter + }; + + typedef QFlags<AlignmentFlag> Alignment; + + enum TextFlag { + TextSingleLine = 0x0100, + TextDontClip = 0x0200, + TextExpandTabs = 0x0400, + TextShowMnemonic = 0x0800, + TextWordWrap = 0x1000, + TextWrapAnywhere = 0x2000, + TextDontPrint = 0x4000, + TextIncludeTrailingSpaces = 0x08000000, + TextHideMnemonic = 0x8000, + TextJustificationForced = 0x10000, + TextForceLeftToRight = 0x20000, + TextForceRightToLeft = 0x40000, + + + TextLongestVariant = 0x80000, + TextBypassShaping = 0x100000 + }; + + enum TextElideMode { + ElideLeft, + ElideRight, + ElideMiddle, + ElideNone + }; + + enum WhiteSpaceMode { + WhiteSpaceNormal, + WhiteSpacePre, + WhiteSpaceNoWrap, + WhiteSpaceModeUndefined = -1 + }; + + enum HitTestAccuracy { ExactHit, FuzzyHit }; + + enum WindowType { + Widget = 0x00000000, + Window = 0x00000001, + Dialog = 0x00000002 | Window, + Sheet = 0x00000004 | Window, + Drawer = Sheet | Dialog, + Popup = 0x00000008 | Window, + Tool = Popup | Dialog, + ToolTip = Popup | Sheet, + SplashScreen = ToolTip | Dialog, + Desktop = 0x00000010 | Window, + SubWindow = 0x00000012, + ForeignWindow = 0x00000020 | Window, + CoverWindow = 0x00000040 | Window, + + WindowType_Mask = 0x000000ff, + MSWindowsFixedSizeDialogHint = 0x00000100, + MSWindowsOwnDC = 0x00000200, + BypassWindowManagerHint = 0x00000400, + X11BypassWindowManagerHint = BypassWindowManagerHint, + FramelessWindowHint = 0x00000800, + WindowTitleHint = 0x00001000, + WindowSystemMenuHint = 0x00002000, + WindowMinimizeButtonHint = 0x00004000, + WindowMaximizeButtonHint = 0x00008000, + WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint, + WindowContextHelpButtonHint = 0x00010000, + WindowShadeButtonHint = 0x00020000, + WindowStaysOnTopHint = 0x00040000, + WindowTransparentForInput = 0x00080000, + WindowOverridesSystemGestures = 0x00100000, + WindowDoesNotAcceptFocus = 0x00200000, + MaximizeUsingFullscreenGeometryHint = 0x00400000, + + CustomizeWindowHint = 0x02000000, + WindowStaysOnBottomHint = 0x04000000, + WindowCloseButtonHint = 0x08000000, + MacWindowToolBarButtonHint = 0x10000000, + BypassGraphicsProxyWidget = 0x20000000, + NoDropShadowWindowHint = 0x40000000, + WindowFullscreenButtonHint = 0x80000000, + + + + WindowOkButtonHint = 0x00080000, + WindowCancelButtonHint = 0x00100000 + }; + + typedef QFlags<WindowType> WindowFlags; + + enum WindowState { + WindowNoState = 0x00000000, + WindowMinimized = 0x00000001, + WindowMaximized = 0x00000002, + WindowFullScreen = 0x00000004, + WindowActive = 0x00000008 + }; + + typedef QFlags<WindowState> WindowStates; + + enum ApplicationState { + ApplicationSuspended = 0x00000000, + ApplicationHidden = 0x00000001, + ApplicationInactive = 0x00000002, + ApplicationActive = 0x00000004 + }; + + typedef QFlags<ApplicationState> ApplicationStates; + + enum ScreenOrientation { + PrimaryOrientation = 0x00000000, + PortraitOrientation = 0x00000001, + LandscapeOrientation = 0x00000002, + InvertedPortraitOrientation = 0x00000004, + InvertedLandscapeOrientation = 0x00000008 + }; + + typedef QFlags<ScreenOrientation> ScreenOrientations; + + enum WidgetAttribute { + WA_Disabled = 0, + WA_UnderMouse = 1, + WA_MouseTracking = 2, + WA_ContentsPropagated = 3, + WA_OpaquePaintEvent = 4, + WA_NoBackground = WA_OpaquePaintEvent, + WA_StaticContents = 5, + WA_LaidOut = 7, + WA_PaintOnScreen = 8, + WA_NoSystemBackground = 9, + WA_UpdatesDisabled = 10, + WA_Mapped = 11, + WA_MacNoClickThrough = 12, + WA_InputMethodEnabled = 14, + WA_WState_Visible = 15, + WA_WState_Hidden = 16, + + WA_ForceDisabled = 32, + WA_KeyCompression = 33, + WA_PendingMoveEvent = 34, + WA_PendingResizeEvent = 35, + WA_SetPalette = 36, + WA_SetFont = 37, + WA_SetCursor = 38, + WA_NoChildEventsFromChildren = 39, + WA_WindowModified = 41, + WA_Resized = 42, + WA_Moved = 43, + WA_PendingUpdate = 44, + WA_InvalidSize = 45, + WA_MacBrushedMetal = 46, + WA_MacMetalStyle = WA_MacBrushedMetal, + WA_CustomWhatsThis = 47, + WA_LayoutOnEntireRect = 48, + WA_OutsideWSRange = 49, + WA_GrabbedShortcut = 50, + WA_TransparentForMouseEvents = 51, + WA_PaintUnclipped = 52, + WA_SetWindowIcon = 53, + WA_NoMouseReplay = 54, + WA_DeleteOnClose = 55, + WA_RightToLeft = 56, + WA_SetLayoutDirection = 57, + WA_NoChildEventsForParent = 58, + WA_ForceUpdatesDisabled = 59, + + WA_WState_Created = 60, + WA_WState_CompressKeys = 61, + WA_WState_InPaintEvent = 62, + WA_WState_Reparented = 63, + WA_WState_ConfigPending = 64, + WA_WState_Polished = 66, + WA_WState_DND = 67, + WA_WState_OwnSizePolicy = 68, + WA_WState_ExplicitShowHide = 69, + + WA_ShowModal = 70, + WA_MouseNoMask = 71, + WA_GroupLeader = 72, + WA_NoMousePropagation = 73, + WA_Hover = 74, + WA_InputMethodTransparent = 75, + WA_QuitOnClose = 76, + + WA_KeyboardFocusChange = 77, + + WA_AcceptDrops = 78, + WA_DropSiteRegistered = 79, + WA_ForceAcceptDrops = WA_DropSiteRegistered, + + WA_WindowPropagation = 80, + + WA_NoX11EventCompression = 81, + WA_TintedBackground = 82, + WA_X11OpenGLOverlay = 83, + WA_AlwaysShowToolTips = 84, + WA_MacOpaqueSizeGrip = 85, + WA_SetStyle = 86, + + WA_SetLocale = 87, + WA_MacShowFocusRect = 88, + + WA_MacNormalSize = 89, + WA_MacSmallSize = 90, + WA_MacMiniSize = 91, + + WA_LayoutUsesWidgetRect = 92, + WA_StyledBackground = 93, + WA_MSWindowsUseDirect3D = 94, + WA_CanHostQMdiSubWindowTitleBar = 95, + + WA_MacAlwaysShowToolWindow = 96, + + WA_StyleSheet = 97, + + WA_ShowWithoutActivating = 98, + + WA_X11BypassTransientForHint = 99, + + WA_NativeWindow = 100, + WA_DontCreateNativeAncestors = 101, + + WA_MacVariableSize = 102, + + WA_DontShowOnScreen = 103, + + + WA_X11NetWmWindowTypeDesktop = 104, + WA_X11NetWmWindowTypeDock = 105, + WA_X11NetWmWindowTypeToolBar = 106, + WA_X11NetWmWindowTypeMenu = 107, + WA_X11NetWmWindowTypeUtility = 108, + WA_X11NetWmWindowTypeSplash = 109, + WA_X11NetWmWindowTypeDialog = 110, + WA_X11NetWmWindowTypeDropDownMenu = 111, + WA_X11NetWmWindowTypePopupMenu = 112, + WA_X11NetWmWindowTypeToolTip = 113, + WA_X11NetWmWindowTypeNotification = 114, + WA_X11NetWmWindowTypeCombo = 115, + WA_X11NetWmWindowTypeDND = 116, + + WA_MacFrameworkScaled = 117, + + WA_SetWindowModality = 118, + WA_WState_WindowOpacitySet = 119, + WA_TranslucentBackground = 120, + + WA_AcceptTouchEvents = 121, + WA_WState_AcceptedTouchBeginEvent = 122, + WA_TouchPadAcceptSingleTouchEvents = 123, + + WA_X11DoNotAcceptFocus = 126, + WA_MacNoShadow = 127, + + WA_AlwaysStackOnTop = 128, + + + WA_AttributeCount + }; + + enum ApplicationAttribute + { + AA_ImmediateWidgetCreation = 0, + AA_MSWindowsUseDirect3DByDefault = 1, + AA_DontShowIconsInMenus = 2, + AA_NativeWindows = 3, + AA_DontCreateNativeWidgetSiblings = 4, + AA_PluginApplication = 5, + AA_MacPluginApplication = AA_PluginApplication, + AA_DontUseNativeMenuBar = 6, + AA_MacDontSwapCtrlAndMeta = 7, + AA_Use96Dpi = 8, + AA_X11InitThreads = 10, + AA_SynthesizeTouchForUnhandledMouseEvents = 11, + AA_SynthesizeMouseForUnhandledTouchEvents = 12, + AA_UseHighDpiPixmaps = 13, + AA_ForceRasterWidgets = 14, + AA_UseDesktopOpenGL = 15, + AA_UseOpenGLES = 16, + AA_UseSoftwareOpenGL = 17, + AA_ShareOpenGLContexts = 18, + AA_SetPalette = 19, + AA_EnableHighDpiScaling = 20, + AA_DisableHighDpiScaling = 21, + AA_UseStyleSheetPropagationInWidgetStyles = 22, + AA_DontUseNativeDialogs = 23, + AA_SynthesizeMouseForUnhandledTabletEvents = 24, + + + AA_AttributeCount + }; + + + + + + enum ImageConversionFlag { + ColorMode_Mask = 0x00000003, + AutoColor = 0x00000000, + ColorOnly = 0x00000003, + MonoOnly = 0x00000002, + + + AlphaDither_Mask = 0x0000000c, + ThresholdAlphaDither = 0x00000000, + OrderedAlphaDither = 0x00000004, + DiffuseAlphaDither = 0x00000008, + NoAlpha = 0x0000000c, + + Dither_Mask = 0x00000030, + DiffuseDither = 0x00000000, + OrderedDither = 0x00000010, + ThresholdDither = 0x00000020, + + + DitherMode_Mask = 0x000000c0, + AutoDither = 0x00000000, + PreferDither = 0x00000040, + AvoidDither = 0x00000080, + + NoOpaqueDetection = 0x00000100, + NoFormatConversion = 0x00000200 + }; + typedef QFlags<ImageConversionFlag> ImageConversionFlags; + + enum BGMode { + TransparentMode, + OpaqueMode + }; + + enum Key { + Key_Escape = 0x01000000, + Key_Tab = 0x01000001, + Key_Backtab = 0x01000002, + Key_Backspace = 0x01000003, + Key_Return = 0x01000004, + Key_Enter = 0x01000005, + Key_Insert = 0x01000006, + Key_Delete = 0x01000007, + Key_Pause = 0x01000008, + Key_Print = 0x01000009, + Key_SysReq = 0x0100000a, + Key_Clear = 0x0100000b, + Key_Home = 0x01000010, + Key_End = 0x01000011, + Key_Left = 0x01000012, + Key_Up = 0x01000013, + Key_Right = 0x01000014, + Key_Down = 0x01000015, + Key_PageUp = 0x01000016, + Key_PageDown = 0x01000017, + Key_Shift = 0x01000020, + Key_Control = 0x01000021, + Key_Meta = 0x01000022, + Key_Alt = 0x01000023, + Key_CapsLock = 0x01000024, + Key_NumLock = 0x01000025, + Key_ScrollLock = 0x01000026, + Key_F1 = 0x01000030, + Key_F2 = 0x01000031, + Key_F3 = 0x01000032, + Key_F4 = 0x01000033, + Key_F5 = 0x01000034, + Key_F6 = 0x01000035, + Key_F7 = 0x01000036, + Key_F8 = 0x01000037, + Key_F9 = 0x01000038, + Key_F10 = 0x01000039, + Key_F11 = 0x0100003a, + Key_F12 = 0x0100003b, + Key_F13 = 0x0100003c, + Key_F14 = 0x0100003d, + Key_F15 = 0x0100003e, + Key_F16 = 0x0100003f, + Key_F17 = 0x01000040, + Key_F18 = 0x01000041, + Key_F19 = 0x01000042, + Key_F20 = 0x01000043, + Key_F21 = 0x01000044, + Key_F22 = 0x01000045, + Key_F23 = 0x01000046, + Key_F24 = 0x01000047, + Key_F25 = 0x01000048, + Key_F26 = 0x01000049, + Key_F27 = 0x0100004a, + Key_F28 = 0x0100004b, + Key_F29 = 0x0100004c, + Key_F30 = 0x0100004d, + Key_F31 = 0x0100004e, + Key_F32 = 0x0100004f, + Key_F33 = 0x01000050, + Key_F34 = 0x01000051, + Key_F35 = 0x01000052, + Key_Super_L = 0x01000053, + Key_Super_R = 0x01000054, + Key_Menu = 0x01000055, + Key_Hyper_L = 0x01000056, + Key_Hyper_R = 0x01000057, + Key_Help = 0x01000058, + Key_Direction_L = 0x01000059, + Key_Direction_R = 0x01000060, + Key_Space = 0x20, + Key_Any = Key_Space, + Key_Exclam = 0x21, + Key_QuoteDbl = 0x22, + Key_NumberSign = 0x23, + Key_Dollar = 0x24, + Key_Percent = 0x25, + Key_Ampersand = 0x26, + Key_Apostrophe = 0x27, + Key_ParenLeft = 0x28, + Key_ParenRight = 0x29, + Key_Asterisk = 0x2a, + Key_Plus = 0x2b, + Key_Comma = 0x2c, + Key_Minus = 0x2d, + Key_Period = 0x2e, + Key_Slash = 0x2f, + Key_0 = 0x30, + Key_1 = 0x31, + Key_2 = 0x32, + Key_3 = 0x33, + Key_4 = 0x34, + Key_5 = 0x35, + Key_6 = 0x36, + Key_7 = 0x37, + Key_8 = 0x38, + Key_9 = 0x39, + Key_Colon = 0x3a, + Key_Semicolon = 0x3b, + Key_Less = 0x3c, + Key_Equal = 0x3d, + Key_Greater = 0x3e, + Key_Question = 0x3f, + Key_At = 0x40, + Key_A = 0x41, + Key_B = 0x42, + Key_C = 0x43, + Key_D = 0x44, + Key_E = 0x45, + Key_F = 0x46, + Key_G = 0x47, + Key_H = 0x48, + Key_I = 0x49, + Key_J = 0x4a, + Key_K = 0x4b, + Key_L = 0x4c, + Key_M = 0x4d, + Key_N = 0x4e, + Key_O = 0x4f, + Key_P = 0x50, + Key_Q = 0x51, + Key_R = 0x52, + Key_S = 0x53, + Key_T = 0x54, + Key_U = 0x55, + Key_V = 0x56, + Key_W = 0x57, + Key_X = 0x58, + Key_Y = 0x59, + Key_Z = 0x5a, + Key_BracketLeft = 0x5b, + Key_Backslash = 0x5c, + Key_BracketRight = 0x5d, + Key_AsciiCircum = 0x5e, + Key_Underscore = 0x5f, + Key_QuoteLeft = 0x60, + Key_BraceLeft = 0x7b, + Key_Bar = 0x7c, + Key_BraceRight = 0x7d, + Key_AsciiTilde = 0x7e, + + Key_nobreakspace = 0x0a0, + Key_exclamdown = 0x0a1, + Key_cent = 0x0a2, + Key_sterling = 0x0a3, + Key_currency = 0x0a4, + Key_yen = 0x0a5, + Key_brokenbar = 0x0a6, + Key_section = 0x0a7, + Key_diaeresis = 0x0a8, + Key_copyright = 0x0a9, + Key_ordfeminine = 0x0aa, + Key_guillemotleft = 0x0ab, + Key_notsign = 0x0ac, + Key_hyphen = 0x0ad, + Key_registered = 0x0ae, + Key_macron = 0x0af, + Key_degree = 0x0b0, + Key_plusminus = 0x0b1, + Key_twosuperior = 0x0b2, + Key_threesuperior = 0x0b3, + Key_acute = 0x0b4, + Key_mu = 0x0b5, + Key_paragraph = 0x0b6, + Key_periodcentered = 0x0b7, + Key_cedilla = 0x0b8, + Key_onesuperior = 0x0b9, + Key_masculine = 0x0ba, + Key_guillemotright = 0x0bb, + Key_onequarter = 0x0bc, + Key_onehalf = 0x0bd, + Key_threequarters = 0x0be, + Key_questiondown = 0x0bf, + Key_Agrave = 0x0c0, + Key_Aacute = 0x0c1, + Key_Acircumflex = 0x0c2, + Key_Atilde = 0x0c3, + Key_Adiaeresis = 0x0c4, + Key_Aring = 0x0c5, + Key_AE = 0x0c6, + Key_Ccedilla = 0x0c7, + Key_Egrave = 0x0c8, + Key_Eacute = 0x0c9, + Key_Ecircumflex = 0x0ca, + Key_Ediaeresis = 0x0cb, + Key_Igrave = 0x0cc, + Key_Iacute = 0x0cd, + Key_Icircumflex = 0x0ce, + Key_Idiaeresis = 0x0cf, + Key_ETH = 0x0d0, + Key_Ntilde = 0x0d1, + Key_Ograve = 0x0d2, + Key_Oacute = 0x0d3, + Key_Ocircumflex = 0x0d4, + Key_Otilde = 0x0d5, + Key_Odiaeresis = 0x0d6, + Key_multiply = 0x0d7, + Key_Ooblique = 0x0d8, + Key_Ugrave = 0x0d9, + Key_Uacute = 0x0da, + Key_Ucircumflex = 0x0db, + Key_Udiaeresis = 0x0dc, + Key_Yacute = 0x0dd, + Key_THORN = 0x0de, + Key_ssharp = 0x0df, + Key_division = 0x0f7, + Key_ydiaeresis = 0x0ff, + + + + + + + Key_AltGr = 0x01001103, + Key_Multi_key = 0x01001120, + Key_Codeinput = 0x01001137, + Key_SingleCandidate = 0x0100113c, + Key_MultipleCandidate = 0x0100113d, + Key_PreviousCandidate = 0x0100113e, + + + Key_Mode_switch = 0x0100117e, + + + + Key_Kanji = 0x01001121, + Key_Muhenkan = 0x01001122, + + Key_Henkan = 0x01001123, + Key_Romaji = 0x01001124, + Key_Hiragana = 0x01001125, + Key_Katakana = 0x01001126, + Key_Hiragana_Katakana = 0x01001127, + Key_Zenkaku = 0x01001128, + Key_Hankaku = 0x01001129, + Key_Zenkaku_Hankaku = 0x0100112a, + Key_Touroku = 0x0100112b, + Key_Massyo = 0x0100112c, + Key_Kana_Lock = 0x0100112d, + Key_Kana_Shift = 0x0100112e, + Key_Eisu_Shift = 0x0100112f, + Key_Eisu_toggle = 0x01001130, +# 806 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qnamespace.h" + Key_Hangul = 0x01001131, + Key_Hangul_Start = 0x01001132, + Key_Hangul_End = 0x01001133, + Key_Hangul_Hanja = 0x01001134, + Key_Hangul_Jamo = 0x01001135, + Key_Hangul_Romaja = 0x01001136, + + Key_Hangul_Jeonja = 0x01001138, + Key_Hangul_Banja = 0x01001139, + Key_Hangul_PreHanja = 0x0100113a, + Key_Hangul_PostHanja = 0x0100113b, + + + + Key_Hangul_Special = 0x0100113f, + + + + Key_Dead_Grave = 0x01001250, + Key_Dead_Acute = 0x01001251, + Key_Dead_Circumflex = 0x01001252, + Key_Dead_Tilde = 0x01001253, + Key_Dead_Macron = 0x01001254, + Key_Dead_Breve = 0x01001255, + Key_Dead_Abovedot = 0x01001256, + Key_Dead_Diaeresis = 0x01001257, + Key_Dead_Abovering = 0x01001258, + Key_Dead_Doubleacute = 0x01001259, + Key_Dead_Caron = 0x0100125a, + Key_Dead_Cedilla = 0x0100125b, + Key_Dead_Ogonek = 0x0100125c, + Key_Dead_Iota = 0x0100125d, + Key_Dead_Voiced_Sound = 0x0100125e, + Key_Dead_Semivoiced_Sound = 0x0100125f, + Key_Dead_Belowdot = 0x01001260, + Key_Dead_Hook = 0x01001261, + Key_Dead_Horn = 0x01001262, + + + Key_Back = 0x01000061, + Key_Forward = 0x01000062, + Key_Stop = 0x01000063, + Key_Refresh = 0x01000064, + Key_VolumeDown = 0x01000070, + Key_VolumeMute = 0x01000071, + Key_VolumeUp = 0x01000072, + Key_BassBoost = 0x01000073, + Key_BassUp = 0x01000074, + Key_BassDown = 0x01000075, + Key_TrebleUp = 0x01000076, + Key_TrebleDown = 0x01000077, + Key_MediaPlay = 0x01000080, + Key_MediaStop = 0x01000081, + Key_MediaPrevious = 0x01000082, + Key_MediaNext = 0x01000083, + Key_MediaRecord = 0x01000084, + Key_MediaPause = 0x1000085, + Key_MediaTogglePlayPause = 0x1000086, + Key_HomePage = 0x01000090, + Key_Favorites = 0x01000091, + Key_Search = 0x01000092, + Key_Standby = 0x01000093, + Key_OpenUrl = 0x01000094, + Key_LaunchMail = 0x010000a0, + Key_LaunchMedia = 0x010000a1, + Key_Launch0 = 0x010000a2, + Key_Launch1 = 0x010000a3, + Key_Launch2 = 0x010000a4, + Key_Launch3 = 0x010000a5, + Key_Launch4 = 0x010000a6, + Key_Launch5 = 0x010000a7, + Key_Launch6 = 0x010000a8, + Key_Launch7 = 0x010000a9, + Key_Launch8 = 0x010000aa, + Key_Launch9 = 0x010000ab, + Key_LaunchA = 0x010000ac, + Key_LaunchB = 0x010000ad, + Key_LaunchC = 0x010000ae, + Key_LaunchD = 0x010000af, + Key_LaunchE = 0x010000b0, + Key_LaunchF = 0x010000b1, + Key_MonBrightnessUp = 0x010000b2, + Key_MonBrightnessDown = 0x010000b3, + Key_KeyboardLightOnOff = 0x010000b4, + Key_KeyboardBrightnessUp = 0x010000b5, + Key_KeyboardBrightnessDown = 0x010000b6, + Key_PowerOff = 0x010000b7, + Key_WakeUp = 0x010000b8, + Key_Eject = 0x010000b9, + Key_ScreenSaver = 0x010000ba, + Key_WWW = 0x010000bb, + Key_Memo = 0x010000bc, + Key_LightBulb = 0x010000bd, + Key_Shop = 0x010000be, + Key_History = 0x010000bf, + Key_AddFavorite = 0x010000c0, + Key_HotLinks = 0x010000c1, + Key_BrightnessAdjust = 0x010000c2, + Key_Finance = 0x010000c3, + Key_Community = 0x010000c4, + Key_AudioRewind = 0x010000c5, + Key_BackForward = 0x010000c6, + Key_ApplicationLeft = 0x010000c7, + Key_ApplicationRight = 0x010000c8, + Key_Book = 0x010000c9, + Key_CD = 0x010000ca, + Key_Calculator = 0x010000cb, + Key_ToDoList = 0x010000cc, + Key_ClearGrab = 0x010000cd, + Key_Close = 0x010000ce, + Key_Copy = 0x010000cf, + Key_Cut = 0x010000d0, + Key_Display = 0x010000d1, + Key_DOS = 0x010000d2, + Key_Documents = 0x010000d3, + Key_Excel = 0x010000d4, + Key_Explorer = 0x010000d5, + Key_Game = 0x010000d6, + Key_Go = 0x010000d7, + Key_iTouch = 0x010000d8, + Key_LogOff = 0x010000d9, + Key_Market = 0x010000da, + Key_Meeting = 0x010000db, + Key_MenuKB = 0x010000dc, + Key_MenuPB = 0x010000dd, + Key_MySites = 0x010000de, + Key_News = 0x010000df, + Key_OfficeHome = 0x010000e0, + Key_Option = 0x010000e1, + Key_Paste = 0x010000e2, + Key_Phone = 0x010000e3, + Key_Calendar = 0x010000e4, + Key_Reply = 0x010000e5, + Key_Reload = 0x010000e6, + Key_RotateWindows = 0x010000e7, + Key_RotationPB = 0x010000e8, + Key_RotationKB = 0x010000e9, + Key_Save = 0x010000ea, + Key_Send = 0x010000eb, + Key_Spell = 0x010000ec, + Key_SplitScreen = 0x010000ed, + Key_Support = 0x010000ee, + Key_TaskPane = 0x010000ef, + Key_Terminal = 0x010000f0, + Key_Tools = 0x010000f1, + Key_Travel = 0x010000f2, + Key_Video = 0x010000f3, + Key_Word = 0x010000f4, + Key_Xfer = 0x010000f5, + Key_ZoomIn = 0x010000f6, + Key_ZoomOut = 0x010000f7, + Key_Away = 0x010000f8, + Key_Messenger = 0x010000f9, + Key_WebCam = 0x010000fa, + Key_MailForward = 0x010000fb, + Key_Pictures = 0x010000fc, + Key_Music = 0x010000fd, + Key_Battery = 0x010000fe, + Key_Bluetooth = 0x010000ff, + Key_WLAN = 0x01000100, + Key_UWB = 0x01000101, + Key_AudioForward = 0x01000102, + Key_AudioRepeat = 0x01000103, + Key_AudioRandomPlay = 0x01000104, + Key_Subtitle = 0x01000105, + Key_AudioCycleTrack = 0x01000106, + Key_Time = 0x01000107, + Key_Hibernate = 0x01000108, + Key_View = 0x01000109, + Key_TopMenu = 0x0100010a, + Key_PowerDown = 0x0100010b, + Key_Suspend = 0x0100010c, + Key_ContrastAdjust = 0x0100010d, + + Key_LaunchG = 0x0100010e, + Key_LaunchH = 0x0100010f, + + Key_TouchpadToggle = 0x01000110, + Key_TouchpadOn = 0x01000111, + Key_TouchpadOff = 0x01000112, + + Key_MicMute = 0x01000113, + + Key_Red = 0x01000114, + Key_Green = 0x01000115, + Key_Yellow = 0x01000116, + Key_Blue = 0x01000117, + + Key_ChannelUp = 0x01000118, + Key_ChannelDown = 0x01000119, + + Key_Guide = 0x0100011a, + Key_Info = 0x0100011b, + Key_Settings = 0x0100011c, + + Key_MicVolumeUp = 0x0100011d, + Key_MicVolumeDown = 0x0100011e, + + Key_New = 0x01000120, + Key_Open = 0x01000121, + Key_Find = 0x01000122, + Key_Undo = 0x01000123, + Key_Redo = 0x01000124, + + Key_MediaLast = 0x0100ffff, + + + Key_Select = 0x01010000, + Key_Yes = 0x01010001, + Key_No = 0x01010002, + + + Key_Cancel = 0x01020001, + Key_Printer = 0x01020002, + Key_Execute = 0x01020003, + Key_Sleep = 0x01020004, + Key_Play = 0x01020005, + Key_Zoom = 0x01020006, + + + + Key_Exit = 0x0102000a, + + + Key_Context1 = 0x01100000, + Key_Context2 = 0x01100001, + Key_Context3 = 0x01100002, + Key_Context4 = 0x01100003, + Key_Call = 0x01100004, + Key_Hangup = 0x01100005, + Key_Flip = 0x01100006, + Key_ToggleCallHangup = 0x01100007, + Key_VoiceDial = 0x01100008, + Key_LastNumberRedial = 0x01100009, + + Key_Camera = 0x01100020, + Key_CameraFocus = 0x01100021, + + Key_unknown = 0x01ffffff + }; + + enum ArrowType { + NoArrow, + UpArrow, + DownArrow, + LeftArrow, + RightArrow + }; + + enum PenStyle { + NoPen, + SolidLine, + DashLine, + DotLine, + DashDotLine, + DashDotDotLine, + CustomDashLine + + , MPenStyle = 0x0f + + }; + + enum PenCapStyle { + FlatCap = 0x00, + SquareCap = 0x10, + RoundCap = 0x20, + MPenCapStyle = 0x30 + }; + + enum PenJoinStyle { + MiterJoin = 0x00, + BevelJoin = 0x40, + RoundJoin = 0x80, + SvgMiterJoin = 0x100, + MPenJoinStyle = 0x1c0 + }; + + enum BrushStyle { + NoBrush, + SolidPattern, + Dense1Pattern, + Dense2Pattern, + Dense3Pattern, + Dense4Pattern, + Dense5Pattern, + Dense6Pattern, + Dense7Pattern, + HorPattern, + VerPattern, + CrossPattern, + BDiagPattern, + FDiagPattern, + DiagCrossPattern, + LinearGradientPattern, + RadialGradientPattern, + ConicalGradientPattern, + TexturePattern = 24 + }; + + enum SizeMode { + AbsoluteSize, + RelativeSize + }; + + enum UIEffect { + UI_General, + UI_AnimateMenu, + UI_FadeMenu, + UI_AnimateCombo, + UI_AnimateTooltip, + UI_FadeTooltip, + UI_AnimateToolBox + }; + + enum CursorShape { + ArrowCursor, + UpArrowCursor, + CrossCursor, + WaitCursor, + IBeamCursor, + SizeVerCursor, + SizeHorCursor, + SizeBDiagCursor, + SizeFDiagCursor, + SizeAllCursor, + BlankCursor, + SplitVCursor, + SplitHCursor, + PointingHandCursor, + ForbiddenCursor, + WhatsThisCursor, + BusyCursor, + OpenHandCursor, + ClosedHandCursor, + DragCopyCursor, + DragMoveCursor, + DragLinkCursor, + LastCursor = DragLinkCursor, + BitmapCursor = 24, + CustomCursor = 25 + }; + + enum TextFormat { + PlainText, + RichText, + AutoText + }; + + enum AspectRatioMode { + IgnoreAspectRatio, + KeepAspectRatio, + KeepAspectRatioByExpanding + }; + + enum DockWidgetArea { + LeftDockWidgetArea = 0x1, + RightDockWidgetArea = 0x2, + TopDockWidgetArea = 0x4, + BottomDockWidgetArea = 0x8, + + DockWidgetArea_Mask = 0xf, + AllDockWidgetAreas = DockWidgetArea_Mask, + NoDockWidgetArea = 0 + }; + enum DockWidgetAreaSizes { + NDockWidgetAreas = 4 + }; + + typedef QFlags<DockWidgetArea> DockWidgetAreas; + + enum ToolBarArea { + LeftToolBarArea = 0x1, + RightToolBarArea = 0x2, + TopToolBarArea = 0x4, + BottomToolBarArea = 0x8, + + ToolBarArea_Mask = 0xf, + AllToolBarAreas = ToolBarArea_Mask, + NoToolBarArea = 0 + }; + + enum ToolBarAreaSizes { + NToolBarAreas = 4 + }; + + typedef QFlags<ToolBarArea> ToolBarAreas; + + enum DateFormat { + TextDate, + ISODate, + SystemLocaleDate, + LocalDate = SystemLocaleDate, + LocaleDate, + SystemLocaleShortDate, + SystemLocaleLongDate, + DefaultLocaleShortDate, + DefaultLocaleLongDate, + RFC2822Date + }; + + enum TimeSpec { + LocalTime, + UTC, + OffsetFromUTC, + TimeZone + }; + + enum DayOfWeek { + Monday = 1, + Tuesday = 2, + Wednesday = 3, + Thursday = 4, + Friday = 5, + Saturday = 6, + Sunday = 7 + }; + + enum ScrollBarPolicy { + ScrollBarAsNeeded, + ScrollBarAlwaysOff, + ScrollBarAlwaysOn + }; + + enum CaseSensitivity { + CaseInsensitive, + CaseSensitive + }; + + enum Corner { + TopLeftCorner = 0x00000, + TopRightCorner = 0x00001, + BottomLeftCorner = 0x00002, + BottomRightCorner = 0x00003 + }; + + enum Edge { + TopEdge = 0x00001, + LeftEdge = 0x00002, + RightEdge = 0x00004, + BottomEdge = 0x00008 + }; + + typedef QFlags<Edge> Edges; + + enum ConnectionType { + AutoConnection, + DirectConnection, + QueuedConnection, + BlockingQueuedConnection, + UniqueConnection = 0x80 + }; + + enum ShortcutContext { + WidgetShortcut, + WindowShortcut, + ApplicationShortcut, + WidgetWithChildrenShortcut + }; + + enum FillRule { + OddEvenFill, + WindingFill + }; + + enum MaskMode { + MaskInColor, + MaskOutColor + }; + + enum ClipOperation { + NoClip, + ReplaceClip, + IntersectClip + }; + + + enum ItemSelectionMode { + ContainsItemShape = 0x0, + IntersectsItemShape = 0x1, + ContainsItemBoundingRect = 0x2, + IntersectsItemBoundingRect = 0x3 + }; + + enum ItemSelectionOperation { + ReplaceSelection, + AddToSelection + }; + + enum TransformationMode { + FastTransformation, + SmoothTransformation + }; + + enum Axis { + XAxis, + YAxis, + ZAxis + }; + + enum FocusReason { + MouseFocusReason, + TabFocusReason, + BacktabFocusReason, + ActiveWindowFocusReason, + PopupFocusReason, + ShortcutFocusReason, + MenuBarFocusReason, + OtherFocusReason, + NoFocusReason + }; + + enum ContextMenuPolicy { + NoContextMenu, + DefaultContextMenu, + ActionsContextMenu, + CustomContextMenu, + PreventContextMenu + }; + + enum InputMethodQuery { + ImEnabled = 0x1, + ImCursorRectangle = 0x2, + ImMicroFocus = 0x2, + ImFont = 0x4, + ImCursorPosition = 0x8, + ImSurroundingText = 0x10, + ImCurrentSelection = 0x20, + ImMaximumTextLength = 0x40, + ImAnchorPosition = 0x80, + ImHints = 0x100, + ImPreferredLanguage = 0x200, + + ImAbsolutePosition = 0x400, + ImTextBeforeCursor = 0x800, + ImTextAfterCursor = 0x1000, + ImEnterKeyType = 0x2000, + ImAnchorRectangle = 0x4000, + + ImPlatformData = 0x80000000, + ImQueryInput = ImCursorRectangle | ImCursorPosition | ImSurroundingText | + ImCurrentSelection | ImAnchorPosition, + ImQueryAll = 0xffffffff + }; + typedef QFlags<InputMethodQuery> InputMethodQueries; + + enum InputMethodHint { + ImhNone = 0x0, + + ImhHiddenText = 0x1, + ImhSensitiveData = 0x2, + ImhNoAutoUppercase = 0x4, + ImhPreferNumbers = 0x8, + ImhPreferUppercase = 0x10, + ImhPreferLowercase = 0x20, + ImhNoPredictiveText = 0x40, + + ImhDate = 0x80, + ImhTime = 0x100, + + ImhPreferLatin = 0x200, + + ImhMultiLine = 0x400, + + ImhDigitsOnly = 0x10000, + ImhFormattedNumbersOnly = 0x20000, + ImhUppercaseOnly = 0x40000, + ImhLowercaseOnly = 0x80000, + ImhDialableCharactersOnly = 0x100000, + ImhEmailCharactersOnly = 0x200000, + ImhUrlCharactersOnly = 0x400000, + ImhLatinOnly = 0x800000, + + ImhExclusiveInputMask = 0xffff0000 + }; + typedef QFlags<InputMethodHint> InputMethodHints; + + enum EnterKeyType { + EnterKeyDefault, + EnterKeyReturn, + EnterKeyDone, + EnterKeyGo, + EnterKeySend, + EnterKeySearch, + EnterKeyNext, + EnterKeyPrevious + }; + + enum ToolButtonStyle { + ToolButtonIconOnly, + ToolButtonTextOnly, + ToolButtonTextBesideIcon, + ToolButtonTextUnderIcon, + ToolButtonFollowStyle + }; + + enum LayoutDirection { + LeftToRight, + RightToLeft, + LayoutDirectionAuto + }; + + enum AnchorPoint { + AnchorLeft = 0, + AnchorHorizontalCenter, + AnchorRight, + AnchorTop, + AnchorVerticalCenter, + AnchorBottom + }; + + enum FindChildOption { + FindDirectChildrenOnly = 0x0, + FindChildrenRecursively = 0x1 + }; + typedef QFlags<FindChildOption> FindChildOptions; + + enum DropAction { + CopyAction = 0x1, + MoveAction = 0x2, + LinkAction = 0x4, + ActionMask = 0xff, + TargetMoveAction = 0x8002, + IgnoreAction = 0x0 + }; + typedef QFlags<DropAction> DropActions; + + enum CheckState { + Unchecked, + PartiallyChecked, + Checked + }; + + enum ItemDataRole { + DisplayRole = 0, + DecorationRole = 1, + EditRole = 2, + ToolTipRole = 3, + StatusTipRole = 4, + WhatsThisRole = 5, + + FontRole = 6, + TextAlignmentRole = 7, + BackgroundColorRole = 8, + BackgroundRole = 8, + TextColorRole = 9, + ForegroundRole = 9, + CheckStateRole = 10, + + AccessibleTextRole = 11, + AccessibleDescriptionRole = 12, + + SizeHintRole = 13, + InitialSortOrderRole = 14, + + DisplayPropertyRole = 27, + DecorationPropertyRole = 28, + ToolTipPropertyRole = 29, + StatusTipPropertyRole = 30, + WhatsThisPropertyRole = 31, + + UserRole = 0x0100 + }; + + enum ItemFlag { + NoItemFlags = 0, + ItemIsSelectable = 1, + ItemIsEditable = 2, + ItemIsDragEnabled = 4, + ItemIsDropEnabled = 8, + ItemIsUserCheckable = 16, + ItemIsEnabled = 32, + ItemIsAutoTristate = 64, + + ItemIsTristate = ItemIsAutoTristate, + + ItemNeverHasChildren = 128, + ItemIsUserTristate = 256 + }; + typedef QFlags<ItemFlag> ItemFlags; + + enum MatchFlag { + MatchExactly = 0, + MatchContains = 1, + MatchStartsWith = 2, + MatchEndsWith = 3, + MatchRegExp = 4, + MatchWildcard = 5, + MatchFixedString = 8, + MatchCaseSensitive = 16, + MatchWrap = 32, + MatchRecursive = 64 + }; + typedef QFlags<MatchFlag> MatchFlags; + + typedef void * HANDLE; + + + + + enum WindowModality { + NonModal, + WindowModal, + ApplicationModal + }; + + enum TextInteractionFlag { + NoTextInteraction = 0, + TextSelectableByMouse = 1, + TextSelectableByKeyboard = 2, + LinksAccessibleByMouse = 4, + LinksAccessibleByKeyboard = 8, + TextEditable = 16, + + TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable, + TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard + }; + typedef QFlags<TextInteractionFlag> TextInteractionFlags; + + enum EventPriority { + HighEventPriority = 1, + NormalEventPriority = 0, + LowEventPriority = -1 + }; + + enum SizeHint { + MinimumSize, + PreferredSize, + MaximumSize, + MinimumDescent, + NSizeHints + }; + + enum WindowFrameSection { + NoSection, + LeftSection, + TopLeftSection, + TopSection, + TopRightSection, + RightSection, + BottomRightSection, + BottomSection, + BottomLeftSection, + TitleBarArea + }; + + + enum class Initialization { + Uninitialized + }; + static constexpr __attribute__((__unused__)) Initialization Uninitialized = Initialization::Uninitialized; + + + + + + + enum CoordinateSystem { + DeviceCoordinates, + LogicalCoordinates + }; + + enum TouchPointState { + TouchPointPressed = 0x01, + TouchPointMoved = 0x02, + TouchPointStationary = 0x04, + TouchPointReleased = 0x08 + }; + typedef QFlags<TouchPointState> TouchPointStates; + + + enum GestureState + { + NoGesture, + GestureStarted = 1, + GestureUpdated = 2, + GestureFinished = 3, + GestureCanceled = 4 + }; + + enum GestureType + { + TapGesture = 1, + TapAndHoldGesture = 2, + PanGesture = 3, + PinchGesture = 4, + SwipeGesture = 5, + + CustomGesture = 0x0100, + + LastGestureType = ~0u + }; + + enum GestureFlag + { + DontStartGestureOnChildren = 0x01, + ReceivePartialGestures = 0x02, + IgnoredGesturesPropagateToParent = 0x04 + }; + typedef QFlags<GestureFlag> GestureFlags; + + enum NativeGestureType + { + BeginNativeGesture, + EndNativeGesture, + PanNativeGesture, + ZoomNativeGesture, + SmartZoomNativeGesture, + RotateNativeGesture, + SwipeNativeGesture + }; + + + + enum NavigationMode + { + NavigationModeNone, + NavigationModeKeypadTabOrder, + NavigationModeKeypadDirectional, + NavigationModeCursorAuto, + NavigationModeCursorForceVisible + }; + + enum CursorMoveStyle { + LogicalMoveStyle, + VisualMoveStyle + }; + + enum TimerType { + PreciseTimer, + CoarseTimer, + VeryCoarseTimer + }; + + enum ScrollPhase { + NoScrollPhase = 0, + ScrollBegin, + ScrollUpdate, + ScrollEnd + }; + + enum MouseEventSource { + MouseEventNotSynthesized, + MouseEventSynthesizedBySystem, + MouseEventSynthesizedByQt, + MouseEventSynthesizedByApplication + }; + + enum MouseEventFlag { + MouseEventCreatedDoubleClick = 0x01, + MouseEventFlagMask = 0xFF + }; + typedef QFlags<MouseEventFlag> MouseEventFlags; + + + + inline const QMetaObject *qt_getEnumMetaObject(ScrollBarPolicy) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ScrollBarPolicy) noexcept { return "ScrollBarPolicy"; } + inline const QMetaObject *qt_getEnumMetaObject(FocusPolicy) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(FocusPolicy) noexcept { return "FocusPolicy"; } + inline const QMetaObject *qt_getEnumMetaObject(ContextMenuPolicy) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ContextMenuPolicy) noexcept { return "ContextMenuPolicy"; } + inline const QMetaObject *qt_getEnumMetaObject(ArrowType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ArrowType) noexcept { return "ArrowType"; } + inline const QMetaObject *qt_getEnumMetaObject(ToolButtonStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ToolButtonStyle) noexcept { return "ToolButtonStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(PenStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(PenStyle) noexcept { return "PenStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(PenCapStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(PenCapStyle) noexcept { return "PenCapStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(PenJoinStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(PenJoinStyle) noexcept { return "PenJoinStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(BrushStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(BrushStyle) noexcept { return "BrushStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(FillRule) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(FillRule) noexcept { return "FillRule"; } + inline const QMetaObject *qt_getEnumMetaObject(MaskMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(MaskMode) noexcept { return "MaskMode"; } + inline const QMetaObject *qt_getEnumMetaObject(BGMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(BGMode) noexcept { return "BGMode"; } + inline const QMetaObject *qt_getEnumMetaObject(ClipOperation) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ClipOperation) noexcept { return "ClipOperation"; } + inline const QMetaObject *qt_getEnumMetaObject(SizeMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(SizeMode) noexcept { return "SizeMode"; } + inline const QMetaObject *qt_getEnumMetaObject(Axis) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Axis) noexcept { return "Axis"; } + inline const QMetaObject *qt_getEnumMetaObject(Corner) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Corner) noexcept { return "Corner"; } + inline const QMetaObject *qt_getEnumMetaObject(Edge) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Edge) noexcept { return "Edge"; } + inline const QMetaObject *qt_getEnumMetaObject(LayoutDirection) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(LayoutDirection) noexcept { return "LayoutDirection"; } + inline const QMetaObject *qt_getEnumMetaObject(SizeHint) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(SizeHint) noexcept { return "SizeHint"; } + inline const QMetaObject *qt_getEnumMetaObject(Orientation) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Orientation) noexcept { return "Orientation"; } + inline const QMetaObject *qt_getEnumMetaObject(DropAction) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DropAction) noexcept { return "DropAction"; } + inline const QMetaObject *qt_getEnumMetaObject(Alignment) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Alignment) noexcept { return "Alignment"; } + inline const QMetaObject *qt_getEnumMetaObject(Orientations) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Orientations) noexcept { return "Orientations"; } + inline const QMetaObject *qt_getEnumMetaObject(DropActions) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DropActions) noexcept { return "DropActions"; } + inline const QMetaObject *qt_getEnumMetaObject(Edges) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Edges) noexcept { return "Edges"; } + inline const QMetaObject *qt_getEnumMetaObject(DockWidgetAreas) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DockWidgetAreas) noexcept { return "DockWidgetAreas"; } + inline const QMetaObject *qt_getEnumMetaObject(ToolBarAreas) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ToolBarAreas) noexcept { return "ToolBarAreas"; } + inline const QMetaObject *qt_getEnumMetaObject(DockWidgetArea) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DockWidgetArea) noexcept { return "DockWidgetArea"; } + inline const QMetaObject *qt_getEnumMetaObject(ToolBarArea) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ToolBarArea) noexcept { return "ToolBarArea"; } + inline const QMetaObject *qt_getEnumMetaObject(TextFormat) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TextFormat) noexcept { return "TextFormat"; } + inline const QMetaObject *qt_getEnumMetaObject(TextElideMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TextElideMode) noexcept { return "TextElideMode"; } + inline const QMetaObject *qt_getEnumMetaObject(DateFormat) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DateFormat) noexcept { return "DateFormat"; } + inline const QMetaObject *qt_getEnumMetaObject(TimeSpec) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TimeSpec) noexcept { return "TimeSpec"; } + inline const QMetaObject *qt_getEnumMetaObject(DayOfWeek) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(DayOfWeek) noexcept { return "DayOfWeek"; } + inline const QMetaObject *qt_getEnumMetaObject(CursorShape) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(CursorShape) noexcept { return "CursorShape"; } + inline const QMetaObject *qt_getEnumMetaObject(GlobalColor) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(GlobalColor) noexcept { return "GlobalColor"; } + inline const QMetaObject *qt_getEnumMetaObject(AspectRatioMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(AspectRatioMode) noexcept { return "AspectRatioMode"; } + inline const QMetaObject *qt_getEnumMetaObject(TransformationMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TransformationMode) noexcept { return "TransformationMode"; } + inline const QMetaObject *qt_getEnumMetaObject(ImageConversionFlags) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ImageConversionFlags) noexcept { return "ImageConversionFlags"; } + inline const QMetaObject *qt_getEnumMetaObject(Key) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(Key) noexcept { return "Key"; } + inline const QMetaObject *qt_getEnumMetaObject(ShortcutContext) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ShortcutContext) noexcept { return "ShortcutContext"; } + inline const QMetaObject *qt_getEnumMetaObject(TextInteractionFlag) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TextInteractionFlag) noexcept { return "TextInteractionFlag"; } + inline const QMetaObject *qt_getEnumMetaObject(TextInteractionFlags) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TextInteractionFlags) noexcept { return "TextInteractionFlags"; } + inline const QMetaObject *qt_getEnumMetaObject(ItemSelectionMode) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ItemSelectionMode) noexcept { return "ItemSelectionMode"; } + inline const QMetaObject *qt_getEnumMetaObject(ItemSelectionOperation) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ItemSelectionOperation) noexcept { return "ItemSelectionOperation"; } + inline const QMetaObject *qt_getEnumMetaObject(ItemFlags) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ItemFlags) noexcept { return "ItemFlags"; } + inline const QMetaObject *qt_getEnumMetaObject(CheckState) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(CheckState) noexcept { return "CheckState"; } + inline const QMetaObject *qt_getEnumMetaObject(ItemDataRole) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ItemDataRole) noexcept { return "ItemDataRole"; } + inline const QMetaObject *qt_getEnumMetaObject(SortOrder) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(SortOrder) noexcept { return "SortOrder"; } + inline const QMetaObject *qt_getEnumMetaObject(CaseSensitivity) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(CaseSensitivity) noexcept { return "CaseSensitivity"; } + inline const QMetaObject *qt_getEnumMetaObject(MatchFlags) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(MatchFlags) noexcept { return "MatchFlags"; } + inline const QMetaObject *qt_getEnumMetaObject(KeyboardModifiers) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(KeyboardModifiers) noexcept { return "KeyboardModifiers"; } + inline const QMetaObject *qt_getEnumMetaObject(MouseButtons) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(MouseButtons) noexcept { return "MouseButtons"; } + inline const QMetaObject *qt_getEnumMetaObject(WindowType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WindowType) noexcept { return "WindowType"; } + inline const QMetaObject *qt_getEnumMetaObject(WindowState) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WindowState) noexcept { return "WindowState"; } + inline const QMetaObject *qt_getEnumMetaObject(WindowModality) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WindowModality) noexcept { return "WindowModality"; } + inline const QMetaObject *qt_getEnumMetaObject(WidgetAttribute) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WidgetAttribute) noexcept { return "WidgetAttribute"; } + inline const QMetaObject *qt_getEnumMetaObject(ApplicationAttribute) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ApplicationAttribute) noexcept { return "ApplicationAttribute"; } + inline const QMetaObject *qt_getEnumMetaObject(WindowFlags) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WindowFlags) noexcept { return "WindowFlags"; } + inline const QMetaObject *qt_getEnumMetaObject(WindowStates) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(WindowStates) noexcept { return "WindowStates"; } + inline const QMetaObject *qt_getEnumMetaObject(FocusReason) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(FocusReason) noexcept { return "FocusReason"; } + inline const QMetaObject *qt_getEnumMetaObject(InputMethodHint) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(InputMethodHint) noexcept { return "InputMethodHint"; } + inline const QMetaObject *qt_getEnumMetaObject(InputMethodQuery) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(InputMethodQuery) noexcept { return "InputMethodQuery"; } + inline const QMetaObject *qt_getEnumMetaObject(InputMethodHints) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(InputMethodHints) noexcept { return "InputMethodHints"; } + inline const QMetaObject *qt_getEnumMetaObject(EnterKeyType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(EnterKeyType) noexcept { return "EnterKeyType"; } + inline const QMetaObject *qt_getEnumMetaObject(InputMethodQueries) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(InputMethodQueries) noexcept { return "InputMethodQueries"; } + inline const QMetaObject *qt_getEnumMetaObject(TouchPointStates) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TouchPointStates) noexcept { return "TouchPointStates"; } + inline const QMetaObject *qt_getEnumMetaObject(ScreenOrientation) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ScreenOrientation) noexcept { return "ScreenOrientation"; } + inline const QMetaObject *qt_getEnumMetaObject(ScreenOrientations) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ScreenOrientations) noexcept { return "ScreenOrientations"; } + inline const QMetaObject *qt_getEnumMetaObject(ConnectionType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ConnectionType) noexcept { return "ConnectionType"; } + inline const QMetaObject *qt_getEnumMetaObject(ApplicationState) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ApplicationState) noexcept { return "ApplicationState"; } + + inline const QMetaObject *qt_getEnumMetaObject(GestureState) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(GestureState) noexcept { return "GestureState"; } + inline const QMetaObject *qt_getEnumMetaObject(GestureType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(GestureType) noexcept { return "GestureType"; } + inline const QMetaObject *qt_getEnumMetaObject(NativeGestureType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(NativeGestureType) noexcept { return "NativeGestureType"; } + + inline const QMetaObject *qt_getEnumMetaObject(CursorMoveStyle) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(CursorMoveStyle) noexcept { return "CursorMoveStyle"; } + inline const QMetaObject *qt_getEnumMetaObject(TimerType) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TimerType) noexcept { return "TimerType"; } + inline const QMetaObject *qt_getEnumMetaObject(ScrollPhase) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(ScrollPhase) noexcept { return "ScrollPhase"; } + inline const QMetaObject *qt_getEnumMetaObject(MouseEventSource) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(MouseEventSource) noexcept { return "MouseEventSource"; } + inline const QMetaObject *qt_getEnumMetaObject(MouseEventFlag) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(MouseEventFlag) noexcept { return "MouseEventFlag"; } + inline const QMetaObject *qt_getEnumMetaObject(TabFocusBehavior) noexcept { return qt_getQtMetaObject(); } inline constexpr const char *qt_getEnumName(TabFocusBehavior) noexcept { return "TabFocusBehavior"; } + + +} + + + + + + + +constexpr inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) noexcept { return QFlags<Qt::MouseButtons::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, QFlags<Qt::MouseButtons::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::MouseButtons::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) noexcept { return QFlags<Qt::Orientations::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, QFlags<Qt::Orientations::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::Orientations::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) noexcept { return QFlags<Qt::KeyboardModifiers::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, QFlags<Qt::KeyboardModifiers::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::KeyboardModifiers::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) noexcept { return QFlags<Qt::WindowFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, QFlags<Qt::WindowFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::WindowFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) noexcept { return QFlags<Qt::Alignment::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, QFlags<Qt::Alignment::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::Alignment::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::Edges::enum_type> operator|(Qt::Edges::enum_type f1, Qt::Edges::enum_type f2) noexcept { return QFlags<Qt::Edges::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::Edges::enum_type> operator|(Qt::Edges::enum_type f1, QFlags<Qt::Edges::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::Edges::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) noexcept { return QFlags<Qt::ImageConversionFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, QFlags<Qt::ImageConversionFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ImageConversionFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) noexcept { return QFlags<Qt::DockWidgetAreas::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, QFlags<Qt::DockWidgetAreas::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::DockWidgetAreas::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) noexcept { return QFlags<Qt::ToolBarAreas::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, QFlags<Qt::ToolBarAreas::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ToolBarAreas::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) noexcept { return QFlags<Qt::WindowStates::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, QFlags<Qt::WindowStates::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::WindowStates::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::ScreenOrientations::enum_type> operator|(Qt::ScreenOrientations::enum_type f1, Qt::ScreenOrientations::enum_type f2) noexcept { return QFlags<Qt::ScreenOrientations::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::ScreenOrientations::enum_type> operator|(Qt::ScreenOrientations::enum_type f1, QFlags<Qt::ScreenOrientations::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ScreenOrientations::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) noexcept { return QFlags<Qt::DropActions::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, QFlags<Qt::DropActions::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::DropActions::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) noexcept { return QFlags<Qt::ItemFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, QFlags<Qt::ItemFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ItemFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) noexcept { return QFlags<Qt::MatchFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, QFlags<Qt::MatchFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::MatchFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, Qt::TextInteractionFlags::enum_type f2) noexcept { return QFlags<Qt::TextInteractionFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, QFlags<Qt::TextInteractionFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::TextInteractionFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::InputMethodQueries::enum_type> operator|(Qt::InputMethodQueries::enum_type f1, Qt::InputMethodQueries::enum_type f2) noexcept { return QFlags<Qt::InputMethodQueries::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::InputMethodQueries::enum_type> operator|(Qt::InputMethodQueries::enum_type f1, QFlags<Qt::InputMethodQueries::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::InputMethodQueries::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::InputMethodHints::enum_type> operator|(Qt::InputMethodHints::enum_type f1, Qt::InputMethodHints::enum_type f2) noexcept { return QFlags<Qt::InputMethodHints::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::InputMethodHints::enum_type> operator|(Qt::InputMethodHints::enum_type f1, QFlags<Qt::InputMethodHints::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::InputMethodHints::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::TouchPointStates::enum_type> operator|(Qt::TouchPointStates::enum_type f1, Qt::TouchPointStates::enum_type f2) noexcept { return QFlags<Qt::TouchPointStates::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::TouchPointStates::enum_type> operator|(Qt::TouchPointStates::enum_type f1, QFlags<Qt::TouchPointStates::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::TouchPointStates::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } +constexpr inline QFlags<Qt::MouseEventFlags::enum_type> operator|(Qt::MouseEventFlags::enum_type f1, Qt::MouseEventFlags::enum_type f2) noexcept { return QFlags<Qt::MouseEventFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::MouseEventFlags::enum_type> operator|(Qt::MouseEventFlags::enum_type f1, QFlags<Qt::MouseEventFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::MouseEventFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + +constexpr inline QFlags<Qt::GestureFlags::enum_type> operator|(Qt::GestureFlags::enum_type f1, Qt::GestureFlags::enum_type f2) noexcept { return QFlags<Qt::GestureFlags::enum_type>(f1) | f2; } constexpr inline QFlags<Qt::GestureFlags::enum_type> operator|(Qt::GestureFlags::enum_type f1, QFlags<Qt::GestureFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::GestureFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + + +typedef bool (*qInternalCallback)(void **); + +class __attribute__((visibility("default"))) QInternal { +public: + enum PaintDeviceFlags { + UnknownDevice = 0x00, + Widget = 0x01, + Pixmap = 0x02, + Image = 0x03, + Printer = 0x04, + Picture = 0x05, + Pbuffer = 0x06, + FramebufferObject = 0x07, + CustomRaster = 0x08, + MacQuartz = 0x09, + PaintBuffer = 0x0a, + OpenGL = 0x0b + }; + enum RelayoutType { + RelayoutNormal, + RelayoutDragging, + RelayoutDropped + }; + + enum DockPosition { + LeftDock, + RightDock, + TopDock, + BottomDock, + DockCount + }; + + enum Callback { + EventNotifyCallback, + LastCallback + }; + static bool registerCallback(Callback, qInternalCallback); + static bool unregisterCallback(Callback, qInternalCallback); + static bool activateCallbacks(Callback, void **); +}; + + +# 1 "../../include/QtCore/qnamespace.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 +# 1 "../../include/QtCore/qarraydata.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" +# 1 "../../include/QtCore/qrefcount.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" 2 +# 1 "/mnt/odroid-c2/usr/include/string.h" 1 3 4 +# 27 "/mnt/odroid-c2/usr/include/string.h" 3 4 + +# 27 "/mnt/odroid-c2/usr/include/string.h" 3 4 +extern "C" { + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stddef.h" 1 3 4 +# 33 "/mnt/odroid-c2/usr/include/string.h" 2 3 4 + + + + + + + + + +extern void *memcpy (void *__restrict __dest, const void *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, const void *__src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memccpy (void *__restrict __dest, const void *__restrict __src, + int __c, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern "C++" +{ +extern void *memchr (void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const void *memchr (const void *__s, int __c, size_t __n) + throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * +memchr (void *__s, int __c, size_t __n) throw () +{ + return __builtin_memchr (__s, __c, __n); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * +memchr (const void *__s, int __c, size_t __n) throw () +{ + return __builtin_memchr (__s, __c, __n); +} + +} + + + + + + + + + + +extern "C++" void *rawmemchr (void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *rawmemchr (const void *__s, int __c) + throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" void *memrchr (void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) + throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + + + + +extern char *strcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, const char *__restrict __src, + size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (2))); + +# 162 "/mnt/odroid-c2/usr/include/string.h" 3 4 +extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, + __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); + + + + +extern char *strdup (const char *__s) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (const char *__string, size_t __n) + throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +# 206 "/mnt/odroid-c2/usr/include/string.h" 3 4 + + + +extern "C++" +{ +extern char *strchr (char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strchr (const char *__s, int __c) + throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +strchr (char *__s, int __c) throw () +{ + return __builtin_strchr (__s, __c); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +strchr (const char *__s, int __c) throw () +{ + return __builtin_strchr (__s, __c); +} + +} + + + + + + +extern "C++" +{ +extern char *strrchr (char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *strrchr (const char *__s, int __c) + throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +strrchr (char *__s, int __c) throw () +{ + return __builtin_strrchr (__s, __c); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +strrchr (const char *__s, int __c) throw () +{ + return __builtin_strrchr (__s, __c); +} + +} + + + + + + + + + + +extern "C++" char *strchrnul (char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern "C++" const char *strchrnul (const char *__s, int __c) + throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + + + + +extern size_t strcspn (const char *__s, const char *__reject) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (const char *__s, const char *__accept) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern "C++" +{ +extern char *strpbrk (char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strpbrk (const char *__s, const char *__accept) + throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +strpbrk (char *__s, const char *__accept) throw () +{ + return __builtin_strpbrk (__s, __accept); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +strpbrk (const char *__s, const char *__accept) throw () +{ + return __builtin_strpbrk (__s, __accept); +} + +} + + + + + + +extern "C++" +{ +extern char *strstr (char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern const char *strstr (const char *__haystack, const char *__needle) + throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +strstr (char *__haystack, const char *__needle) throw () +{ + return __builtin_strstr (__haystack, __needle); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +strstr (const char *__haystack, const char *__needle) throw () +{ + return __builtin_strstr (__haystack, __needle); +} + +} + + + + + + + +extern char *strtok (char *__restrict __s, const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (2))); + + + + +extern char *__strtok_r (char *__restrict __s, + const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, + char **__restrict __save_ptr) + throw () __attribute__ ((__nonnull__ (2, 3))); + + + + + +extern "C++" char *strcasestr (char *__haystack, const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +extern "C++" const char *strcasestr (const char *__haystack, + const char *__needle) + throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 377 "/mnt/odroid-c2/usr/include/string.h" 3 4 +extern void *memmem (const void *__haystack, size_t __haystacklen, + const void *__needle, size_t __needlelen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern size_t strlen (const char *__s) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strnlen (const char *__string, size_t __maxlen) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strerror (int __errnum) throw (); + +# 433 "/mnt/odroid-c2/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + throw () __attribute__ ((__nonnull__ (2))) ; + + + + + +extern char *strerror_l (int __errnum, __locale_t __l) throw (); + + + + + +extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + +extern void bcopy (const void *__src, void *__dest, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + +extern int bcmp (const void *__s1, const void *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern "C++" +{ +extern char *index (char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *index (const char *__s, int __c) + throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +index (char *__s, int __c) throw () +{ + return __builtin_index (__s, __c); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +index (const char *__s, int __c) throw () +{ + return __builtin_index (__s, __c); +} + +} + + + + + + + +extern "C++" +{ +extern char *rindex (char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +extern const char *rindex (const char *__s, int __c) + throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +rindex (char *__s, int __c) throw () +{ + return __builtin_rindex (__s, __c); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +rindex (const char *__s, int __c) throw () +{ + return __builtin_rindex (__s, __c); +} + +} + + + + + + + +extern int ffs (int __i) throw () __attribute__ ((__const__)); + + + + +extern int ffsl (long int __l) throw () __attribute__ ((__const__)); +__extension__ extern int ffsll (long long int __ll) + throw () __attribute__ ((__const__)); + + + +extern int strcasecmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int strcasecmp_l (const char *__s1, const char *__s2, + __locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern int strncasecmp_l (const char *__s1, const char *__s2, + size_t __n, __locale_t __loc) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + + + + +extern char *strsep (char **__restrict __stringp, + const char *__restrict __delim) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern char *strsignal (int __sig) throw (); + + +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + throw () __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (const char *__s1, const char *__s2) + throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); + + + + + + + +extern "C++" char *basename (char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +extern "C++" const char *basename (const char *__filename) + throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); +# 648 "/mnt/odroid-c2/usr/include/string.h" 3 4 +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * +__mempcpy_inline (void *__restrict __dest, + const void *__restrict __src, size_t __n) +{ + return (char *) memcpy (__dest, __src, __n) + __n; +} + + + + +} +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" 2 + + + + +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" +struct __attribute__((visibility("default"))) QArrayData +{ + QtPrivate::RefCount ref; + int size; + uint alloc : 31; + uint capacityReserved : 1; + + qptrdiff offset; + + void *data() + { + do { } while ((false) && (size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData))) + ; + return reinterpret_cast<char *>(this) + offset; + } + + const void *data() const + { + do { } while ((false) && (size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData))) + ; + return reinterpret_cast<const char *>(this) + offset; + } + + + + + bool isMutable() const + { + return alloc != 0; + } + + enum AllocationOption { + CapacityReserved = 0x1, + + Unsharable = 0x2, + + RawData = 0x4, + Grow = 0x8, + + Default = 0 + }; + + typedef QFlags<AllocationOption> AllocationOptions; + + size_t detachCapacity(size_t newSize) const + { + if (capacityReserved && newSize < alloc) + return alloc; + return newSize; + } + + AllocationOptions detachFlags() const + { + AllocationOptions result; + if (capacityReserved) + result |= CapacityReserved; + return result; + } + + AllocationOptions cloneFlags() const + { + AllocationOptions result; + if (capacityReserved) + result |= CapacityReserved; + return result; + } + + static QArrayData *allocate(size_t objectSize, size_t alignment, + size_t capacity, AllocationOptions options = Default) + noexcept __attribute__ ((__warn_unused_result__)); + static void deallocate(QArrayData *data, size_t objectSize, + size_t alignment) noexcept; + + static const QArrayData shared_null[2]; + static QArrayData *sharedNull() noexcept { return const_cast<QArrayData*>(shared_null); } +}; + +constexpr inline QFlags<QArrayData::AllocationOptions::enum_type> operator|(QArrayData::AllocationOptions::enum_type f1, QArrayData::AllocationOptions::enum_type f2) noexcept { return QFlags<QArrayData::AllocationOptions::enum_type>(f1) | f2; } constexpr inline QFlags<QArrayData::AllocationOptions::enum_type> operator|(QArrayData::AllocationOptions::enum_type f1, QFlags<QArrayData::AllocationOptions::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QArrayData::AllocationOptions::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + +template <class T> +struct QTypedArrayData + : QArrayData +{ +# 201 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" + typedef T* iterator; + typedef const T* const_iterator; + + + T *data() { return static_cast<T *>(QArrayData::data()); } + const T *data() const { return static_cast<const T *>(QArrayData::data()); } + + iterator begin(iterator = iterator()) { return data(); } + iterator end(iterator = iterator()) { return data() + size; } + const_iterator begin(const_iterator = const_iterator()) const { return data(); } + const_iterator end(const_iterator = const_iterator()) const { return data() + size; } + const_iterator constBegin(const_iterator = const_iterator()) const { return data(); } + const_iterator constEnd(const_iterator = const_iterator()) const { return data() + size; } + + class AlignmentDummy { QArrayData header; T data; }; + + static QTypedArrayData *allocate(size_t capacity, + AllocationOptions options = Default) __attribute__ ((__warn_unused_result__)) + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + return static_cast<QTypedArrayData *>(QArrayData::allocate(sizeof(T), + __alignof__(AlignmentDummy), capacity, options)); + } + + static void deallocate(QArrayData *data) + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + QArrayData::deallocate(data, sizeof(T), __alignof__(AlignmentDummy)); + } + + static QTypedArrayData *fromRawData(const T *data, size_t n, + AllocationOptions options = Default) + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + QTypedArrayData *result = allocate(0, options | RawData); + if (result) { + do { } while ((false) && (!result->ref.isShared())); + + result->offset = reinterpret_cast<const char *>(data) + - reinterpret_cast<const char *>(result); + result->size = int(n); + } + return result; + } + + static QTypedArrayData *sharedNull() noexcept + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + return static_cast<QTypedArrayData *>(QArrayData::sharedNull()); + } + + static QTypedArrayData *sharedEmpty() + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + return allocate( 0); + } + + + static QTypedArrayData *unsharableEmpty() + { + static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); + return allocate( 0, Unsharable); + } + +}; + +template <class T, size_t N> +struct QStaticArrayData +{ + QArrayData header; + T data[N]; +}; + + +template <class T> +struct QArrayDataPointerRef +{ + QTypedArrayData<T> *ptr; +}; +# 360 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qarraydata.h" +namespace QtPrivate { +struct __attribute__((visibility("default"))) QContainerImplHelper +{ + enum CutResult { Null, Empty, Full, Subset }; + static CutResult mid(int originalLength, int *position, int *length); +}; +} + + +# 1 "../../include/QtCore/qarraydata.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/stdarg.h" 1 3 4 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 3 + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 3 + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + + + + + + +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + class locale + { + public: + + + typedef int category; + + + class facet; + class id; + class _Impl; + + friend class facet; + friend class _Impl; + + template<typename _Facet> + friend bool + has_facet(const locale&) throw(); + + template<typename _Facet> + friend const _Facet& + use_facet(const locale&); + + template<typename _Cache> + friend struct __use_cache; +# 98 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + static const category none = 0; + static const category ctype = 1L << 0; + static const category numeric = 1L << 1; + static const category collate = 1L << 2; + static const category time = 1L << 3; + static const category monetary = 1L << 4; + static const category messages = 1L << 5; + static const category all = (ctype | numeric | collate | + time | monetary | messages); +# 117 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + locale() throw(); +# 126 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + locale(const locale& __other) throw(); +# 136 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + explicit + locale(const char* __s); +# 151 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + locale(const locale& __base, const char* __s, category __cat); +# 162 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + explicit + locale(const std::string& __s) : locale(__s.c_str()) { } +# 177 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + locale(const locale& __base, const std::string& __s, category __cat) + : locale(__base, __s.c_str(), __cat) { } +# 192 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + locale(const locale& __base, const locale& __add, category __cat); +# 205 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + template<typename _Facet> + locale(const locale& __other, _Facet* __f); + + + ~locale() throw(); +# 219 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + const locale& + operator=(const locale& __other) throw(); +# 234 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + template<typename _Facet> + locale + combine(const locale& __other) const; + + + + + + + __attribute ((__abi_tag__ ("cxx11"))) + string + name() const; +# 254 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + bool + operator==(const locale& __other) const throw(); + + + + + + + + bool + operator!=(const locale& __other) const throw() + { return !(this->operator==(__other)); } +# 282 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + template<typename _Char, typename _Traits, typename _Alloc> + bool + operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, + const basic_string<_Char, _Traits, _Alloc>& __s2) const; +# 298 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + static locale + global(const locale& __loc); + + + + + static const locale& + classic(); + + private: + + _Impl* _M_impl; + + + static _Impl* _S_classic; + + + static _Impl* _S_global; + + + + + + static const char* const* const _S_categories; +# 333 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + enum { _S_categories_size = 6 + 6 }; + + + static __gthread_once_t _S_once; + + + explicit + locale(_Impl*) throw(); + + static void + _S_initialize(); + + static void + _S_initialize_once() throw(); + + static category + _S_normalize_category(category); + + void + _M_coalesce(const locale& __base, const locale& __add, category __cat); + + + static const id* const _S_twinned_facets[]; + + }; +# 371 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + class locale::facet + { + private: + friend class locale; + friend class locale::_Impl; + + mutable _Atomic_word _M_refcount; + + + static __c_locale _S_c_locale; + + + static const char _S_c_name[2]; + + + static __gthread_once_t _S_once; + + + static void + _S_initialize_once(); + + protected: +# 402 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + explicit + facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) + { } + + + virtual + ~facet(); + + static void + _S_create_c_locale(__c_locale& __cloc, const char* __s, + __c_locale __old = 0); + + static __c_locale + _S_clone_c_locale(__c_locale& __cloc) throw(); + + static void + _S_destroy_c_locale(__c_locale& __cloc); + + static __c_locale + _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); + + + + static __c_locale + _S_get_c_locale(); + + __attribute__ ((__const__)) static const char* + _S_get_c_name() throw(); + + private: + void + _M_add_reference() const throw() + { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } + + void + _M_remove_reference() const throw() + { + + ; + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) + { + ; + try + { delete this; } + catch(...) + { } + } + } + + facet(const facet&); + + facet& + operator=(const facet&); + + class __shim; + + const facet* _M_sso_shim(const id*) const; + const facet* _M_cow_shim(const id*) const; + }; +# 474 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + class locale::id + { + private: + friend class locale; + friend class locale::_Impl; + + template<typename _Facet> + friend const _Facet& + use_facet(const locale&); + + template<typename _Facet> + friend bool + has_facet(const locale&) throw(); + + + + + mutable size_t _M_index; + + + static _Atomic_word _S_refcount; + + void + operator=(const id&); + + id(const id&); + + public: + + + + id() { } + + size_t + _M_id() const throw(); + }; + + + + class locale::_Impl + { + public: + + friend class locale; + friend class locale::facet; + + template<typename _Facet> + friend bool + has_facet(const locale&) throw(); + + template<typename _Facet> + friend const _Facet& + use_facet(const locale&); + + template<typename _Cache> + friend struct __use_cache; + + private: + + _Atomic_word _M_refcount; + const facet** _M_facets; + size_t _M_facets_size; + const facet** _M_caches; + char** _M_names; + static const locale::id* const _S_id_ctype[]; + static const locale::id* const _S_id_numeric[]; + static const locale::id* const _S_id_collate[]; + static const locale::id* const _S_id_time[]; + static const locale::id* const _S_id_monetary[]; + static const locale::id* const _S_id_messages[]; + static const locale::id* const* const _S_facet_categories[]; + + void + _M_add_reference() throw() + { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } + + void + _M_remove_reference() throw() + { + + ; + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) + { + ; + try + { delete this; } + catch(...) + { } + } + } + + _Impl(const _Impl&, size_t); + _Impl(const char*, size_t); + _Impl(size_t) throw(); + + ~_Impl() throw(); + + _Impl(const _Impl&); + + void + operator=(const _Impl&); + + bool + _M_check_same_name() + { + bool __ret = true; + if (_M_names[1]) + + for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) + __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; + return __ret; + } + + void + _M_replace_categories(const _Impl*, category); + + void + _M_replace_category(const _Impl*, const locale::id* const*); + + void + _M_replace_facet(const _Impl*, const locale::id*); + + void + _M_install_facet(const locale::id*, const facet*); + + template<typename _Facet> + void + _M_init_facet(_Facet* __facet) + { _M_install_facet(&_Facet::id, __facet); } + + template<typename _Facet> + void + _M_init_facet_unchecked(_Facet* __facet) + { + __facet->_M_add_reference(); + _M_facets[_Facet::id._M_id()] = __facet; + } + + void + _M_install_cache(const facet*, size_t); + + void _M_init_extra(facet**); + void _M_init_extra(void*, void*, const char*, const char*); + }; +# 632 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + template<typename _CharT> + class __cxx11:: collate : public locale::facet + { + public: + + + + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + + protected: + + + __c_locale _M_c_locale_collate; + + public: + + static locale::id id; +# 659 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + explicit + collate(size_t __refs = 0) + : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) + { } +# 673 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + explicit + collate(__c_locale __cloc, size_t __refs = 0) + : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) + { } +# 690 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + int + compare(const _CharT* __lo1, const _CharT* __hi1, + const _CharT* __lo2, const _CharT* __hi2) const + { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } +# 709 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + string_type + transform(const _CharT* __lo, const _CharT* __hi) const + { return this->do_transform(__lo, __hi); } +# 723 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + long + hash(const _CharT* __lo, const _CharT* __hi) const + { return this->do_hash(__lo, __hi); } + + + int + _M_compare(const _CharT*, const _CharT*) const throw(); + + size_t + _M_transform(_CharT*, const _CharT*, size_t) const throw(); + + protected: + + virtual + ~collate() + { _S_destroy_c_locale(_M_c_locale_collate); } +# 752 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + virtual int + do_compare(const _CharT* __lo1, const _CharT* __hi1, + const _CharT* __lo2, const _CharT* __hi2) const; +# 766 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + virtual string_type + do_transform(const _CharT* __lo, const _CharT* __hi) const; +# 779 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 3 + virtual long + do_hash(const _CharT* __lo, const _CharT* __hi) const; + }; + + template<typename _CharT> + locale::id collate<_CharT>::id; + + + template<> + int + collate<char>::_M_compare(const char*, const char*) const throw(); + + template<> + size_t + collate<char>::_M_transform(char*, const char*, size_t) const throw(); + + + template<> + int + collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw(); + + template<> + size_t + collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); + + + + template<typename _CharT> + class __cxx11:: collate_byname : public collate<_CharT> + { + public: + + + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + + explicit + collate_byname(const char* __s, size_t __refs = 0) + : collate<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_collate); + this->_S_create_c_locale(this->_M_c_locale_collate, __s); + } + } + + + explicit + collate_byname(const string& __s, size_t __refs = 0) + : collate_byname(__s.c_str(), __refs) { } + + + protected: + virtual + ~collate_byname() { } + }; + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.tcc" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.tcc" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.tcc" 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Facet> + locale:: + locale(const locale& __other, _Facet* __f) + { + _M_impl = new _Impl(*__other._M_impl, 1); + + try + { _M_impl->_M_install_facet(&_Facet::id, __f); } + catch(...) + { + _M_impl->_M_remove_reference(); + throw; + } + delete [] _M_impl->_M_names[0]; + _M_impl->_M_names[0] = 0; + } + + template<typename _Facet> + locale + locale:: + combine(const locale& __other) const + { + _Impl* __tmp = new _Impl(*_M_impl, 1); + try + { + __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); + } + catch(...) + { + __tmp->_M_remove_reference(); + throw; + } + return locale(__tmp); + } + + template<typename _CharT, typename _Traits, typename _Alloc> + bool + locale:: + operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, + const basic_string<_CharT, _Traits, _Alloc>& __s2) const + { + typedef std::collate<_CharT> __collate_type; + const __collate_type& __collate = use_facet<__collate_type>(*this); + return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), + __s2.data(), __s2.data() + __s2.length()) < 0); + } +# 102 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.tcc" 3 + template<typename _Facet> + bool + has_facet(const locale& __loc) throw() + { + const size_t __i = _Facet::id._M_id(); + const locale::facet** __facets = __loc._M_impl->_M_facets; + return (__i < __loc._M_impl->_M_facets_size + + && dynamic_cast<const _Facet*>(__facets[__i])); + + + + } +# 130 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.tcc" 3 + template<typename _Facet> + const _Facet& + use_facet(const locale& __loc) + { + const size_t __i = _Facet::id._M_id(); + const locale::facet** __facets = __loc._M_impl->_M_facets; + if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) + __throw_bad_cast(); + + return dynamic_cast<const _Facet&>(*__facets[__i]); + + + + } + + + + template<typename _CharT> + int + collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () + { return 0; } + + + template<typename _CharT> + size_t + collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () + { return 0; } + + template<typename _CharT> + int + collate<_CharT>:: + do_compare(const _CharT* __lo1, const _CharT* __hi1, + const _CharT* __lo2, const _CharT* __hi2) const + { + + + const string_type __one(__lo1, __hi1); + const string_type __two(__lo2, __hi2); + + const _CharT* __p = __one.c_str(); + const _CharT* __pend = __one.data() + __one.length(); + const _CharT* __q = __two.c_str(); + const _CharT* __qend = __two.data() + __two.length(); + + + + + for (;;) + { + const int __res = _M_compare(__p, __q); + if (__res) + return __res; + + __p += char_traits<_CharT>::length(__p); + __q += char_traits<_CharT>::length(__q); + if (__p == __pend && __q == __qend) + return 0; + else if (__p == __pend) + return -1; + else if (__q == __qend) + return 1; + + __p++; + __q++; + } + } + + template<typename _CharT> + typename collate<_CharT>::string_type + collate<_CharT>:: + do_transform(const _CharT* __lo, const _CharT* __hi) const + { + string_type __ret; + + + const string_type __str(__lo, __hi); + + const _CharT* __p = __str.c_str(); + const _CharT* __pend = __str.data() + __str.length(); + + size_t __len = (__hi - __lo) * 2; + + _CharT* __c = new _CharT[__len]; + + try + { + + + + for (;;) + { + + size_t __res = _M_transform(__c, __p, __len); + + + if (__res >= __len) + { + __len = __res + 1; + delete [] __c, __c = 0; + __c = new _CharT[__len]; + __res = _M_transform(__c, __p, __len); + } + + __ret.append(__c, __res); + __p += char_traits<_CharT>::length(__p); + if (__p == __pend) + break; + + __p++; + __ret.push_back(_CharT()); + } + } + catch(...) + { + delete [] __c; + throw; + } + + delete [] __c; + + return __ret; + } + + template<typename _CharT> + long + collate<_CharT>:: + do_hash(const _CharT* __lo, const _CharT* __hi) const + { + unsigned long __val = 0; + for (; __lo < __hi; ++__lo) + __val = + *__lo + ((__val << 7) + | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>:: + __digits - 7))); + return static_cast<long>(__val); + } + + + + + extern template class collate<char>; + extern template class collate_byname<char>; + + extern template + const collate<char>& + use_facet<collate<char> >(const locale&); + + extern template + bool + has_facet<collate<char> >(const locale&); + + + extern template class collate<wchar_t>; + extern template class collate_byname<wchar_t>; + + extern template + const collate<wchar_t>& + use_facet<collate<wchar_t> >(const locale&); + + extern template + bool + has_facet<collate<wchar_t> >(const locale&); + + + + +} +# 843 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_classes.h" 2 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 2 3 + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 3 + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/error_constants.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/error_constants.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 3 + +# 1 "/mnt/odroid-c2/usr/include/errno.h" 1 3 4 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cerrno" 2 3 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/error_constants.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + enum class errc + { + address_family_not_supported = 97, + address_in_use = 98, + address_not_available = 99, + already_connected = 106, + argument_list_too_long = 7, + argument_out_of_domain = 33, + bad_address = 14, + bad_file_descriptor = 9, + + + bad_message = 74, + + + broken_pipe = 32, + connection_aborted = 103, + connection_already_in_progress = 114, + connection_refused = 111, + connection_reset = 104, + cross_device_link = 18, + destination_address_required = 89, + device_or_resource_busy = 16, + directory_not_empty = 39, + executable_format_error = 8, + file_exists = 17, + file_too_large = 27, + filename_too_long = 36, + function_not_supported = 38, + host_unreachable = 113, + + + identifier_removed = 43, + + + illegal_byte_sequence = 84, + inappropriate_io_control_operation = 25, + interrupted = 4, + invalid_argument = 22, + invalid_seek = 29, + io_error = 5, + is_a_directory = 21, + message_size = 90, + network_down = 100, + network_reset = 102, + network_unreachable = 101, + no_buffer_space = 105, + no_child_process = 10, + + + no_link = 67, + + + no_lock_available = 37, + + + no_message_available = 61, + + + no_message = 42, + no_protocol_option = 92, + no_space_on_device = 28, + + + no_stream_resources = 63, + + + no_such_device_or_address = 6, + no_such_device = 19, + no_such_file_or_directory = 2, + no_such_process = 3, + not_a_directory = 20, + not_a_socket = 88, + + + not_a_stream = 60, + + + not_connected = 107, + not_enough_memory = 12, + + + not_supported = 95, + + + + operation_canceled = 125, + + + operation_in_progress = 115, + operation_not_permitted = 1, + operation_not_supported = 95, + operation_would_block = 11, + + + owner_dead = 130, + + + permission_denied = 13, + + + protocol_error = 71, + + + protocol_not_supported = 93, + read_only_file_system = 30, + resource_deadlock_would_occur = 35, + resource_unavailable_try_again = 11, + result_out_of_range = 34, + + + state_not_recoverable = 131, + + + + stream_timeout = 62, + + + + text_file_busy = 26, + + + timed_out = 110, + too_many_files_open_in_system = 23, + too_many_files_open = 24, + too_many_links = 31, + too_many_symbolic_link_levels = 40, + + + value_too_large = 75, + + + wrong_protocol_type = 91 + }; + + +} +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 2 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/stdexcept" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/stdexcept" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/stdexcept" 3 + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + struct __cow_string + { + union { + const char* _M_p; + char _M_bytes[sizeof(const char*)]; + }; + + __cow_string(); + __cow_string(const std::string&); + __cow_string(const char*, size_t); + __cow_string(const __cow_string&) noexcept; + __cow_string& operator=(const __cow_string&) noexcept; + ~__cow_string(); + + __cow_string(__cow_string&&) noexcept; + __cow_string& operator=(__cow_string&&) noexcept; + + }; + + typedef basic_string<char> __sso_string; +# 113 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/stdexcept" 3 + class logic_error : public exception + { + __cow_string _M_msg; + + public: + + explicit + logic_error(const string& __arg); + + + explicit + logic_error(const char*); + + + + logic_error(const logic_error&) noexcept; + logic_error& operator=(const logic_error&) noexcept; + + + virtual ~logic_error() noexcept; + + + + virtual const char* + what() const noexcept; + }; + + + + class domain_error : public logic_error + { + public: + explicit domain_error(const string& __arg); + + explicit domain_error(const char*); + + virtual ~domain_error() noexcept; + }; + + + class invalid_argument : public logic_error + { + public: + explicit invalid_argument(const string& __arg); + + explicit invalid_argument(const char*); + + virtual ~invalid_argument() noexcept; + }; + + + + class length_error : public logic_error + { + public: + explicit length_error(const string& __arg); + + explicit length_error(const char*); + + virtual ~length_error() noexcept; + }; + + + + class out_of_range : public logic_error + { + public: + explicit out_of_range(const string& __arg); + + explicit out_of_range(const char*); + + virtual ~out_of_range() noexcept; + }; + + + + + + + class runtime_error : public exception + { + __cow_string _M_msg; + + public: + + explicit + runtime_error(const string& __arg); + + + explicit + runtime_error(const char*); + + + + runtime_error(const runtime_error&) noexcept; + runtime_error& operator=(const runtime_error&) noexcept; + + + virtual ~runtime_error() noexcept; + + + + virtual const char* + what() const noexcept; + }; + + + class range_error : public runtime_error + { + public: + explicit range_error(const string& __arg); + + explicit range_error(const char*); + + virtual ~range_error() noexcept; + }; + + + class overflow_error : public runtime_error + { + public: + explicit overflow_error(const string& __arg); + + explicit overflow_error(const char*); + + virtual ~overflow_error() noexcept; + }; + + + class underflow_error : public runtime_error + { + public: + explicit underflow_error(const string& __arg); + + explicit underflow_error(const char*); + + virtual ~underflow_error() noexcept; + }; + + + + +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + class error_code; + class error_condition; + class system_error; + + + template<typename _Tp> + struct is_error_code_enum : public false_type { }; + + + template<typename _Tp> + struct is_error_condition_enum : public false_type { }; + + template<> + struct is_error_condition_enum<errc> + : public true_type { }; + + inline namespace _V2 { + + + 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; + + + + + + + private: + __attribute ((__abi_tag__ ("cxx11"))) + virtual __cow_string + _M_message(int) const; + + public: + __attribute ((__abi_tag__ ("cxx11"))) + virtual string + message(int) const = 0; +# 102 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/system_error" 3 + 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<const error_category*>()(this, &__other); } + + bool + operator==(const error_category& __other) const noexcept + { return this == &__other; } + + bool + operator!=(const error_category& __other) const noexcept + { return this != &__other; } + }; + + + __attribute__ ((__const__)) const error_category& system_category() noexcept; + __attribute__ ((__const__)) const error_category& generic_category() noexcept; + + } + + error_code make_error_code(errc) noexcept; + + template<typename _Tp> + struct hash; + + + + 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<typename _ErrorCodeEnum, typename = typename + enable_if<is_error_code_enum<_ErrorCodeEnum>::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()); } + + + template<typename _ErrorCodeEnum> + typename enable_if<is_error_code_enum<_ErrorCodeEnum>::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; + + __attribute ((__abi_tag__ ("cxx11"))) + string + message() const + { return category().message(value()); } + + explicit operator bool() const noexcept + { return _M_value != 0 ? true : false; } + + + private: + friend class hash<error_code>; + + int _M_value; + const error_category* _M_cat; + }; + + + inline error_code + make_error_code(errc __e) noexcept + { return error_code(static_cast<int>(__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<typename _CharT, typename _Traits> + 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; + + + + 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<typename _ErrorConditionEnum, typename = typename + enable_if<is_error_condition_enum<_ErrorConditionEnum>::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; + } + + + template<typename _ErrorConditionEnum> + typename enable_if<is_error_condition_enum + <_ErrorConditionEnum>::value, error_condition&>::type + operator=(_ErrorConditionEnum __e) noexcept + { return *this = make_error_condition(__e); } + + void + clear() noexcept + { assign(0, generic_category()); } + + + int + value() const noexcept { return _M_value; } + + const error_category& + category() const noexcept { return *_M_cat; } + + __attribute ((__abi_tag__ ("cxx11"))) + string + message() const + { return category().message(value()); } + + explicit operator bool() const noexcept + { return _M_value != 0 ? true : false; } + + + private: + int _M_value; + const error_category* _M_cat; + }; + + + inline error_condition + make_error_condition(errc __e) noexcept + { return error_condition(static_cast<int>(__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())); + } + + + 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); } + + + + + + + + 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; } + }; + + +} + + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + template<> + struct hash<error_code> + : public __hash_base<size_t, error_code> + { + 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); + } + }; + + +} +# 47 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 2 3 + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + enum _Ios_Fmtflags + { + _S_boolalpha = 1L << 0, + _S_dec = 1L << 1, + _S_fixed = 1L << 2, + _S_hex = 1L << 3, + _S_internal = 1L << 4, + _S_left = 1L << 5, + _S_oct = 1L << 6, + _S_right = 1L << 7, + _S_scientific = 1L << 8, + _S_showbase = 1L << 9, + _S_showpoint = 1L << 10, + _S_showpos = 1L << 11, + _S_skipws = 1L << 12, + _S_unitbuf = 1L << 13, + _S_uppercase = 1L << 14, + _S_adjustfield = _S_left | _S_right | _S_internal, + _S_basefield = _S_dec | _S_oct | _S_hex, + _S_floatfield = _S_scientific | _S_fixed, + _S_ios_fmtflags_end = 1L << 16, + _S_ios_fmtflags_max = 0x7fffffff, + _S_ios_fmtflags_min = ~0x7fffffff + }; + + inline constexpr _Ios_Fmtflags + operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); } + + inline constexpr _Ios_Fmtflags + operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); } + + inline constexpr _Ios_Fmtflags + operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); } + + inline constexpr _Ios_Fmtflags + operator~(_Ios_Fmtflags __a) + { return _Ios_Fmtflags(~static_cast<int>(__a)); } + + inline const _Ios_Fmtflags& + operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) + { return __a = __a | __b; } + + inline const _Ios_Fmtflags& + operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) + { return __a = __a & __b; } + + inline const _Ios_Fmtflags& + operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) + { return __a = __a ^ __b; } + + + enum _Ios_Openmode + { + _S_app = 1L << 0, + _S_ate = 1L << 1, + _S_bin = 1L << 2, + _S_in = 1L << 3, + _S_out = 1L << 4, + _S_trunc = 1L << 5, + _S_ios_openmode_end = 1L << 16, + _S_ios_openmode_max = 0x7fffffff, + _S_ios_openmode_min = ~0x7fffffff + }; + + inline constexpr _Ios_Openmode + operator&(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } + + inline constexpr _Ios_Openmode + operator|(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } + + inline constexpr _Ios_Openmode + operator^(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } + + inline constexpr _Ios_Openmode + operator~(_Ios_Openmode __a) + { return _Ios_Openmode(~static_cast<int>(__a)); } + + inline const _Ios_Openmode& + operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) + { return __a = __a | __b; } + + inline const _Ios_Openmode& + operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) + { return __a = __a & __b; } + + inline const _Ios_Openmode& + operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) + { return __a = __a ^ __b; } + + + enum _Ios_Iostate + { + _S_goodbit = 0, + _S_badbit = 1L << 0, + _S_eofbit = 1L << 1, + _S_failbit = 1L << 2, + _S_ios_iostate_end = 1L << 16, + _S_ios_iostate_max = 0x7fffffff, + _S_ios_iostate_min = ~0x7fffffff + }; + + inline constexpr _Ios_Iostate + operator&(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); } + + inline constexpr _Ios_Iostate + operator|(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); } + + inline constexpr _Ios_Iostate + operator^(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); } + + inline constexpr _Ios_Iostate + operator~(_Ios_Iostate __a) + { return _Ios_Iostate(~static_cast<int>(__a)); } + + inline const _Ios_Iostate& + operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) + { return __a = __a | __b; } + + inline const _Ios_Iostate& + operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) + { return __a = __a & __b; } + + inline const _Ios_Iostate& + operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) + { return __a = __a ^ __b; } + + + enum _Ios_Seekdir + { + _S_beg = 0, + _S_cur = 1, + _S_end = 2, + _S_ios_seekdir_end = 1L << 16 + }; + + + + enum class io_errc { stream = 1 }; + + template <> struct is_error_code_enum<io_errc> : public true_type { }; + + const error_category& iostream_category() noexcept; + + inline error_code + make_error_code(io_errc e) noexcept + { return error_code(static_cast<int>(e), iostream_category()); } + + inline error_condition + make_error_condition(io_errc e) noexcept + { return error_condition(static_cast<int>(e), iostream_category()); } +# 228 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + class ios_base + { +# 246 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + public: +# 255 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error + { + public: + explicit + failure(const string& __str); + + + explicit + failure(const string&, const error_code&); + + explicit + failure(const char*, const error_code& = io_errc::stream); + + + virtual + ~failure() throw(); + + virtual const char* + what() const throw(); + }; +# 323 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + typedef _Ios_Fmtflags fmtflags; + + + static const fmtflags boolalpha = _S_boolalpha; + + + static const fmtflags dec = _S_dec; + + + static const fmtflags fixed = _S_fixed; + + + static const fmtflags hex = _S_hex; + + + + + static const fmtflags internal = _S_internal; + + + + static const fmtflags left = _S_left; + + + static const fmtflags oct = _S_oct; + + + + static const fmtflags right = _S_right; + + + static const fmtflags scientific = _S_scientific; + + + + static const fmtflags showbase = _S_showbase; + + + + static const fmtflags showpoint = _S_showpoint; + + + static const fmtflags showpos = _S_showpos; + + + static const fmtflags skipws = _S_skipws; + + + static const fmtflags unitbuf = _S_unitbuf; + + + + static const fmtflags uppercase = _S_uppercase; + + + static const fmtflags adjustfield = _S_adjustfield; + + + static const fmtflags basefield = _S_basefield; + + + static const fmtflags floatfield = _S_floatfield; +# 398 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + typedef _Ios_Iostate iostate; + + + + static const iostate badbit = _S_badbit; + + + static const iostate eofbit = _S_eofbit; + + + + + static const iostate failbit = _S_failbit; + + + static const iostate goodbit = _S_goodbit; +# 429 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + typedef _Ios_Openmode openmode; + + + static const openmode app = _S_app; + + + static const openmode ate = _S_ate; + + + + + static const openmode binary = _S_bin; + + + static const openmode in = _S_in; + + + static const openmode out = _S_out; + + + static const openmode trunc = _S_trunc; +# 461 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + typedef _Ios_Seekdir seekdir; + + + static const seekdir beg = _S_beg; + + + static const seekdir cur = _S_cur; + + + static const seekdir end = _S_end; + + + typedef int io_state; + typedef int open_mode; + typedef int seek_dir; + + typedef std::streampos streampos; + typedef std::streamoff streamoff; +# 487 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + enum event + { + erase_event, + imbue_event, + copyfmt_event + }; +# 504 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + typedef void (*event_callback) (event __e, ios_base& __b, int __i); +# 516 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + void + register_callback(event_callback __fn, int __index); + + protected: + streamsize _M_precision; + streamsize _M_width; + fmtflags _M_flags; + iostate _M_exception; + iostate _M_streambuf_state; + + + + struct _Callback_list + { + + _Callback_list* _M_next; + ios_base::event_callback _M_fn; + int _M_index; + _Atomic_word _M_refcount; + + _Callback_list(ios_base::event_callback __fn, int __index, + _Callback_list* __cb) + : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } + + void + _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } + + + int + _M_remove_reference() + { + + ; + int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); + if (__res == 0) + { + ; + } + return __res; + } + }; + + _Callback_list* _M_callbacks; + + void + _M_call_callbacks(event __ev) throw(); + + void + _M_dispose_callbacks(void) throw(); + + + struct _Words + { + void* _M_pword; + long _M_iword; + _Words() : _M_pword(0), _M_iword(0) { } + }; + + + _Words _M_word_zero; + + + + enum { _S_local_word_size = 8 }; + _Words _M_local_word[_S_local_word_size]; + + + int _M_word_size; + _Words* _M_word; + + _Words& + _M_grow_words(int __index, bool __iword); + + + locale _M_ios_locale; + + void + _M_init() throw(); + + public: + + + + + + class Init + { + friend class ios_base; + public: + Init(); + ~Init(); + + private: + static _Atomic_word _S_refcount; + static bool _S_synced_with_stdio; + }; + + + + + + + fmtflags + flags() const + { return _M_flags; } +# 629 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + fmtflags + flags(fmtflags __fmtfl) + { + fmtflags __old = _M_flags; + _M_flags = __fmtfl; + return __old; + } +# 645 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + fmtflags + setf(fmtflags __fmtfl) + { + fmtflags __old = _M_flags; + _M_flags |= __fmtfl; + return __old; + } +# 662 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + fmtflags + setf(fmtflags __fmtfl, fmtflags __mask) + { + fmtflags __old = _M_flags; + _M_flags &= ~__mask; + _M_flags |= (__fmtfl & __mask); + return __old; + } + + + + + + + + void + unsetf(fmtflags __mask) + { _M_flags &= ~__mask; } +# 688 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + streamsize + precision() const + { return _M_precision; } + + + + + + + streamsize + precision(streamsize __prec) + { + streamsize __old = _M_precision; + _M_precision = __prec; + return __old; + } + + + + + + + + streamsize + width() const + { return _M_width; } + + + + + + + streamsize + width(streamsize __wide) + { + streamsize __old = _M_width; + _M_width = __wide; + return __old; + } +# 739 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + static bool + sync_with_stdio(bool __sync = true); +# 751 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + locale + imbue(const locale& __loc) throw(); +# 762 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + locale + getloc() const + { return _M_ios_locale; } +# 773 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + const locale& + _M_getloc() const + { return _M_ios_locale; } +# 792 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + static int + xalloc() throw(); +# 808 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + long& + iword(int __ix) + { + _Words& __word = (__ix < _M_word_size) + ? _M_word[__ix] : _M_grow_words(__ix, true); + return __word._M_iword; + } +# 829 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + void*& + pword(int __ix) + { + _Words& __word = (__ix < _M_word_size) + ? _M_word[__ix] : _M_grow_words(__ix, false); + return __word._M_pword; + } +# 846 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + virtual ~ios_base(); + + protected: + ios_base() throw (); +# 860 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ios_base.h" 3 + public: + ios_base(const ios_base&) = delete; + + ios_base& + operator=(const ios_base&) = delete; + + protected: + void + _M_move(ios_base&) noexcept; + + void + _M_swap(ios_base& __rhs) noexcept; + + }; + + + + inline ios_base& + boolalpha(ios_base& __base) + { + __base.setf(ios_base::boolalpha); + return __base; + } + + + inline ios_base& + noboolalpha(ios_base& __base) + { + __base.unsetf(ios_base::boolalpha); + return __base; + } + + + inline ios_base& + showbase(ios_base& __base) + { + __base.setf(ios_base::showbase); + return __base; + } + + + inline ios_base& + noshowbase(ios_base& __base) + { + __base.unsetf(ios_base::showbase); + return __base; + } + + + inline ios_base& + showpoint(ios_base& __base) + { + __base.setf(ios_base::showpoint); + return __base; + } + + + inline ios_base& + noshowpoint(ios_base& __base) + { + __base.unsetf(ios_base::showpoint); + return __base; + } + + + inline ios_base& + showpos(ios_base& __base) + { + __base.setf(ios_base::showpos); + return __base; + } + + + inline ios_base& + noshowpos(ios_base& __base) + { + __base.unsetf(ios_base::showpos); + return __base; + } + + + inline ios_base& + skipws(ios_base& __base) + { + __base.setf(ios_base::skipws); + return __base; + } + + + inline ios_base& + noskipws(ios_base& __base) + { + __base.unsetf(ios_base::skipws); + return __base; + } + + + inline ios_base& + uppercase(ios_base& __base) + { + __base.setf(ios_base::uppercase); + return __base; + } + + + inline ios_base& + nouppercase(ios_base& __base) + { + __base.unsetf(ios_base::uppercase); + return __base; + } + + + inline ios_base& + unitbuf(ios_base& __base) + { + __base.setf(ios_base::unitbuf); + return __base; + } + + + inline ios_base& + nounitbuf(ios_base& __base) + { + __base.unsetf(ios_base::unitbuf); + return __base; + } + + + + inline ios_base& + internal(ios_base& __base) + { + __base.setf(ios_base::internal, ios_base::adjustfield); + return __base; + } + + + inline ios_base& + left(ios_base& __base) + { + __base.setf(ios_base::left, ios_base::adjustfield); + return __base; + } + + + inline ios_base& + right(ios_base& __base) + { + __base.setf(ios_base::right, ios_base::adjustfield); + return __base; + } + + + + inline ios_base& + dec(ios_base& __base) + { + __base.setf(ios_base::dec, ios_base::basefield); + return __base; + } + + + inline ios_base& + hex(ios_base& __base) + { + __base.setf(ios_base::hex, ios_base::basefield); + return __base; + } + + + inline ios_base& + oct(ios_base& __base) + { + __base.setf(ios_base::oct, ios_base::basefield); + return __base; + } + + + + inline ios_base& + fixed(ios_base& __base) + { + __base.setf(ios_base::fixed, ios_base::floatfield); + return __base; + } + + + inline ios_base& + scientific(ios_base& __base) + { + __base.setf(ios_base::scientific, ios_base::floatfield); + return __base; + } + + + + + + + inline ios_base& + hexfloat(ios_base& __base) + { + __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); + return __base; + } + + + inline ios_base& + defaultfloat(ios_base& __base) + { + __base.unsetf(ios_base::floatfield); + return __base; + } + + + +} +# 43 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + streamsize + __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, + basic_streambuf<_CharT, _Traits>*, bool&); +# 119 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + template<typename _CharT, typename _Traits> + class basic_streambuf + { + public: + + + + + + + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + + + + typedef basic_streambuf<char_type, traits_type> __streambuf_type; + + + friend class basic_ios<char_type, traits_type>; + friend class basic_istream<char_type, traits_type>; + friend class basic_ostream<char_type, traits_type>; + friend class istreambuf_iterator<char_type, traits_type>; + friend class ostreambuf_iterator<char_type, traits_type>; + + friend streamsize + __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); + + template<bool _IsMove, typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + _CharT2*>::__type + __copy_move_a2(istreambuf_iterator<_CharT2>, + istreambuf_iterator<_CharT2>, _CharT2*); + + template<typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + istreambuf_iterator<_CharT2> >::__type + find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + const _CharT2&); + + template<typename _CharT2, typename _Traits2> + friend basic_istream<_CharT2, _Traits2>& + operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); + + template<typename _CharT2, typename _Traits2, typename _Alloc> + friend basic_istream<_CharT2, _Traits2>& + operator>>(basic_istream<_CharT2, _Traits2>&, + basic_string<_CharT2, _Traits2, _Alloc>&); + + template<typename _CharT2, typename _Traits2, typename _Alloc> + friend basic_istream<_CharT2, _Traits2>& + getline(basic_istream<_CharT2, _Traits2>&, + basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); + + protected: + + + + + + + + char_type* _M_in_beg; + char_type* _M_in_cur; + char_type* _M_in_end; + char_type* _M_out_beg; + char_type* _M_out_cur; + char_type* _M_out_end; + + + locale _M_buf_locale; + + public: + + virtual + ~basic_streambuf() + { } +# 208 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + locale + pubimbue(const locale& __loc) + { + locale __tmp(this->getloc()); + this->imbue(__loc); + _M_buf_locale = __loc; + return __tmp; + } +# 225 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + locale + getloc() const + { return _M_buf_locale; } +# 238 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + basic_streambuf* + pubsetbuf(char_type* __s, streamsize __n) + { return this->setbuf(__s, __n); } +# 250 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + pos_type + pubseekoff(off_type __off, ios_base::seekdir __way, + ios_base::openmode __mode = ios_base::in | ios_base::out) + { return this->seekoff(__off, __way, __mode); } +# 262 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + pos_type + pubseekpos(pos_type __sp, + ios_base::openmode __mode = ios_base::in | ios_base::out) + { return this->seekpos(__sp, __mode); } + + + + + int + pubsync() { return this->sync(); } +# 283 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + streamsize + in_avail() + { + const streamsize __ret = this->egptr() - this->gptr(); + return __ret ? __ret : this->showmanyc(); + } +# 297 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + snextc() + { + int_type __ret = traits_type::eof(); + if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), + __ret), true)) + __ret = this->sgetc(); + return __ret; + } +# 315 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + sbumpc() + { + int_type __ret; + if (__builtin_expect(this->gptr() < this->egptr(), true)) + { + __ret = traits_type::to_int_type(*this->gptr()); + this->gbump(1); + } + else + __ret = this->uflow(); + return __ret; + } +# 337 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + sgetc() + { + int_type __ret; + if (__builtin_expect(this->gptr() < this->egptr(), true)) + __ret = traits_type::to_int_type(*this->gptr()); + else + __ret = this->underflow(); + return __ret; + } +# 356 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + streamsize + sgetn(char_type* __s, streamsize __n) + { return this->xsgetn(__s, __n); } +# 371 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + sputbackc(char_type __c) + { + int_type __ret; + const bool __testpos = this->eback() < this->gptr(); + if (__builtin_expect(!__testpos || + !traits_type::eq(__c, this->gptr()[-1]), false)) + __ret = this->pbackfail(traits_type::to_int_type(__c)); + else + { + this->gbump(-1); + __ret = traits_type::to_int_type(*this->gptr()); + } + return __ret; + } +# 396 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + sungetc() + { + int_type __ret; + if (__builtin_expect(this->eback() < this->gptr(), true)) + { + this->gbump(-1); + __ret = traits_type::to_int_type(*this->gptr()); + } + else + __ret = this->pbackfail(); + return __ret; + } +# 423 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + int_type + sputc(char_type __c) + { + int_type __ret; + if (__builtin_expect(this->pptr() < this->epptr(), true)) + { + *this->pptr() = __c; + this->pbump(1); + __ret = traits_type::to_int_type(__c); + } + else + __ret = this->overflow(traits_type::to_int_type(__c)); + return __ret; + } +# 449 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + streamsize + sputn(const char_type* __s, streamsize __n) + { return this->xsputn(__s, __n); } + + protected: +# 463 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + basic_streambuf() + : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), + _M_out_beg(0), _M_out_cur(0), _M_out_end(0), + _M_buf_locale(locale()) + { } +# 481 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + char_type* + eback() const { return _M_in_beg; } + + char_type* + gptr() const { return _M_in_cur; } + + char_type* + egptr() const { return _M_in_end; } +# 497 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + void + gbump(int __n) { _M_in_cur += __n; } +# 508 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + void + setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) + { + _M_in_beg = __gbeg; + _M_in_cur = __gnext; + _M_in_end = __gend; + } +# 528 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + char_type* + pbase() const { return _M_out_beg; } + + char_type* + pptr() const { return _M_out_cur; } + + char_type* + epptr() const { return _M_out_end; } +# 544 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + void + pbump(int __n) { _M_out_cur += __n; } +# 554 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + void + setp(char_type* __pbeg, char_type* __pend) + { + _M_out_beg = _M_out_cur = __pbeg; + _M_out_end = __pend; + } +# 575 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual void + imbue(const locale& __loc) + { } +# 590 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual basic_streambuf<char_type,_Traits>* + setbuf(char_type*, streamsize) + { return this; } +# 601 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual pos_type + seekoff(off_type, ios_base::seekdir, + ios_base::openmode = ios_base::in | ios_base::out) + { return pos_type(off_type(-1)); } +# 613 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual pos_type + seekpos(pos_type, + ios_base::openmode = ios_base::in | ios_base::out) + { return pos_type(off_type(-1)); } +# 626 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual int + sync() { return 0; } +# 648 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual streamsize + showmanyc() { return 0; } +# 664 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual streamsize + xsgetn(char_type* __s, streamsize __n); +# 686 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual int_type + underflow() + { return traits_type::eof(); } +# 699 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual int_type + uflow() + { + int_type __ret = traits_type::eof(); + const bool __testeof = traits_type::eq_int_type(this->underflow(), + __ret); + if (!__testeof) + { + __ret = traits_type::to_int_type(*this->gptr()); + this->gbump(1); + } + return __ret; + } +# 723 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual int_type + pbackfail(int_type __c = traits_type::eof()) + { return traits_type::eof(); } +# 741 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual streamsize + xsputn(const char_type* __s, streamsize __n); +# 767 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + virtual int_type + overflow(int_type __c = traits_type::eof()) + { return traits_type::eof(); } + + + + public: +# 782 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 3 + void + stossc() + { + if (this->gptr() < this->egptr()) + this->gbump(1); + else + this->uflow(); + } + + + + void + __safe_gbump(streamsize __n) { _M_in_cur += __n; } + + void + __safe_pbump(streamsize __n) { _M_out_cur += __n; } + + + + + protected: + + basic_streambuf(const basic_streambuf&); + + basic_streambuf& + operator=(const basic_streambuf&); + + + void + swap(basic_streambuf& __sb) + { + std::swap(_M_in_beg, __sb._M_in_beg); + std::swap(_M_in_cur, __sb._M_in_cur); + std::swap(_M_in_end, __sb._M_in_end); + std::swap(_M_out_beg, __sb._M_out_beg); + std::swap(_M_out_cur, __sb._M_out_cur); + std::swap(_M_out_end, __sb._M_out_end); + std::swap(_M_buf_locale, __sb._M_buf_locale); + } + + }; + + + template<typename _CharT, typename _Traits> + std::basic_streambuf<_CharT, _Traits>:: + basic_streambuf(const basic_streambuf&) = default; + + template<typename _CharT, typename _Traits> + std::basic_streambuf<_CharT, _Traits>& + std::basic_streambuf<_CharT, _Traits>:: + operator=(const basic_streambuf&) = default; + + + + template<> + streamsize + __copy_streambufs_eof(basic_streambuf<char>* __sbin, + basic_streambuf<char>* __sbout, bool& __ineof); + + template<> + streamsize + __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin, + basic_streambuf<wchar_t>* __sbout, bool& __ineof); + + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf.tcc" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf.tcc" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf.tcc" 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + streamsize + basic_streambuf<_CharT, _Traits>:: + xsgetn(char_type* __s, streamsize __n) + { + streamsize __ret = 0; + while (__ret < __n) + { + const streamsize __buf_len = this->egptr() - this->gptr(); + if (__buf_len) + { + const streamsize __remaining = __n - __ret; + const streamsize __len = std::min(__buf_len, __remaining); + traits_type::copy(__s, this->gptr(), __len); + __ret += __len; + __s += __len; + this->__safe_gbump(__len); + } + + if (__ret < __n) + { + const int_type __c = this->uflow(); + if (!traits_type::eq_int_type(__c, traits_type::eof())) + { + traits_type::assign(*__s++, traits_type::to_char_type(__c)); + ++__ret; + } + else + break; + } + } + return __ret; + } + + template<typename _CharT, typename _Traits> + streamsize + basic_streambuf<_CharT, _Traits>:: + xsputn(const char_type* __s, streamsize __n) + { + streamsize __ret = 0; + while (__ret < __n) + { + const streamsize __buf_len = this->epptr() - this->pptr(); + if (__buf_len) + { + const streamsize __remaining = __n - __ret; + const streamsize __len = std::min(__buf_len, __remaining); + traits_type::copy(this->pptr(), __s, __len); + __ret += __len; + __s += __len; + this->__safe_pbump(__len); + } + + if (__ret < __n) + { + int_type __c = this->overflow(traits_type::to_int_type(*__s)); + if (!traits_type::eq_int_type(__c, traits_type::eof())) + { + ++__ret; + ++__s; + } + else + break; + } + } + return __ret; + } + + + + + template<typename _CharT, typename _Traits> + streamsize + __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, + basic_streambuf<_CharT, _Traits>* __sbout, + bool& __ineof) + { + streamsize __ret = 0; + __ineof = true; + typename _Traits::int_type __c = __sbin->sgetc(); + while (!_Traits::eq_int_type(__c, _Traits::eof())) + { + __c = __sbout->sputc(_Traits::to_char_type(__c)); + if (_Traits::eq_int_type(__c, _Traits::eof())) + { + __ineof = false; + break; + } + ++__ret; + __c = __sbin->snextc(); + } + return __ret; + } + + template<typename _CharT, typename _Traits> + inline streamsize + __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, + basic_streambuf<_CharT, _Traits>* __sbout) + { + bool __ineof; + return __copy_streambufs_eof(__sbin, __sbout, __ineof); + } + + + + + extern template class basic_streambuf<char>; + extern template + streamsize + __copy_streambufs(basic_streambuf<char>*, + basic_streambuf<char>*); + extern template + streamsize + __copy_streambufs_eof(basic_streambuf<char>*, + basic_streambuf<char>*, bool&); + + + extern template class basic_streambuf<wchar_t>; + extern template + streamsize + __copy_streambufs(basic_streambuf<wchar_t>*, + basic_streambuf<wchar_t>*); + extern template + streamsize + __copy_streambufs_eof(basic_streambuf<wchar_t>*, + basic_streambuf<wchar_t>*, bool&); + + + + +} +# 851 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/streambuf" 2 3 +# 44 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 3 +# 50 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 3 +# 1 "/mnt/odroid-c2/usr/include/wctype.h" 1 3 4 +# 33 "/mnt/odroid-c2/usr/include/wctype.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/wchar.h" 1 3 4 +# 34 "/mnt/odroid-c2/usr/include/wctype.h" 2 3 4 +# 49 "/mnt/odroid-c2/usr/include/wctype.h" 3 4 + + + +typedef unsigned long int wctype_t; + +# 71 "/mnt/odroid-c2/usr/include/wctype.h" 3 4 +enum +{ + __ISwupper = 0, + __ISwlower = 1, + __ISwalpha = 2, + __ISwdigit = 3, + __ISwxdigit = 4, + __ISwspace = 5, + __ISwprint = 6, + __ISwgraph = 7, + __ISwblank = 8, + __ISwcntrl = 9, + __ISwpunct = 10, + __ISwalnum = 11, + + _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), + _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), + _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), + _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), + _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), + _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), + _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), + _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), + _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), + _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), + _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), + _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) +}; + + + +extern "C" { + + + + + + + + +extern int iswalnum (wint_t __wc) throw (); + + + + + +extern int iswalpha (wint_t __wc) throw (); + + +extern int iswcntrl (wint_t __wc) throw (); + + + +extern int iswdigit (wint_t __wc) throw (); + + + +extern int iswgraph (wint_t __wc) throw (); + + + + +extern int iswlower (wint_t __wc) throw (); + + +extern int iswprint (wint_t __wc) throw (); + + + + +extern int iswpunct (wint_t __wc) throw (); + + + + +extern int iswspace (wint_t __wc) throw (); + + + + +extern int iswupper (wint_t __wc) throw (); + + + + +extern int iswxdigit (wint_t __wc) throw (); + + + + + +extern int iswblank (wint_t __wc) throw (); +# 171 "/mnt/odroid-c2/usr/include/wctype.h" 3 4 +extern wctype_t wctype (const char *__property) throw (); + + + +extern int iswctype (wint_t __wc, wctype_t __desc) throw (); + + + + + + + + + + +typedef const __int32_t *wctrans_t; + + + + + + + +extern wint_t towlower (wint_t __wc) throw (); + + +extern wint_t towupper (wint_t __wc) throw (); + + +} +# 213 "/mnt/odroid-c2/usr/include/wctype.h" 3 4 +extern "C" { + + + + +extern wctrans_t wctrans (const char *__property) throw (); + + +extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); + + + + + + + + +extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw (); + + + + + +extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw (); + + +extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw (); + + + +extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw (); + + + +extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswlower_l (wint_t __wc, __locale_t __locale) throw (); + + +extern int iswprint_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswspace_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswupper_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw (); + + + + +extern int iswblank_l (wint_t __wc, __locale_t __locale) throw (); + + + +extern wctype_t wctype_l (const char *__property, __locale_t __locale) + throw (); + + + +extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale) + throw (); + + + + + + + +extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw (); + + +extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw (); + + + +extern wctrans_t wctrans_l (const char *__property, __locale_t __locale) + throw (); + + +extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, + __locale_t __locale) throw (); + + + +} +# 51 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 2 3 +# 80 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cwctype" 3 +namespace std +{ + using ::wctrans_t; + using ::wctype_t; + using ::wint_t; + + using ::iswalnum; + using ::iswalpha; + + using ::iswblank; + + 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; +} +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 1 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 3 + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/cctype" 3 +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/ctype_base.h" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/ctype_base.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + struct ctype_base + { + + typedef const int* __to_type; + + + + typedef unsigned short mask; + static const mask upper = _ISupper; + static const mask lower = _ISlower; + static const mask alpha = _ISalpha; + static const mask digit = _ISdigit; + static const mask xdigit = _ISxdigit; + static const mask space = _ISspace; + static const mask print = _ISprint; + static const mask graph = _ISalpha | _ISdigit | _ISpunct; + static const mask cntrl = _IScntrl; + static const mask punct = _ISpunct; + static const mask alnum = _ISalpha | _ISdigit; + + static const mask blank = _ISblank; + + }; + + +} +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf_iterator.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf_iterator.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf_iterator.h" 3 + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 49 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/streambuf_iterator.h" 3 + template<typename _CharT, typename _Traits> + class istreambuf_iterator + : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type, + _CharT*, + + + _CharT> + + + + { + public: + + + + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename _Traits::int_type int_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_istream<_CharT, _Traits> istream_type; + + + template<typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + ostreambuf_iterator<_CharT2> >::__type + copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + ostreambuf_iterator<_CharT2>); + + template<bool _IsMove, typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + _CharT2*>::__type + __copy_move_a2(istreambuf_iterator<_CharT2>, + istreambuf_iterator<_CharT2>, _CharT2*); + + template<typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + istreambuf_iterator<_CharT2> >::__type + find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + const _CharT2&); + + private: + + + + + + + + mutable streambuf_type* _M_sbuf; + mutable int_type _M_c; + + public: + + constexpr istreambuf_iterator() noexcept + : _M_sbuf(0), _M_c(traits_type::eof()) { } + + + istreambuf_iterator(const istreambuf_iterator&) noexcept = default; + + ~istreambuf_iterator() = default; + + + + istreambuf_iterator(istream_type& __s) noexcept + : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } + + + istreambuf_iterator(streambuf_type* __s) noexcept + : _M_sbuf(__s), _M_c(traits_type::eof()) { } + + + + + char_type + operator*() const + { + + + + + + + + return traits_type::to_char_type(_M_get()); + } + + + istreambuf_iterator& + operator++() + { + + + ; + if (_M_sbuf) + { + _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); + } + return *this; + } + + + istreambuf_iterator + operator++(int) + { + + + ; + + istreambuf_iterator __old = *this; + if (_M_sbuf) + { + __old._M_c = _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); + } + return __old; + } + + + + + + bool + equal(const istreambuf_iterator& __b) const + { return _M_at_eof() == __b._M_at_eof(); } + + private: + 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; + } + return __ret; + } + + bool + _M_at_eof() const + { + const int_type __eof = traits_type::eof(); + return traits_type::eq_int_type(_M_get(), __eof); + } + }; + + template<typename _CharT, typename _Traits> + inline bool + operator==(const istreambuf_iterator<_CharT, _Traits>& __a, + const istreambuf_iterator<_CharT, _Traits>& __b) + { return __a.equal(__b); } + + template<typename _CharT, typename _Traits> + inline bool + operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, + const istreambuf_iterator<_CharT, _Traits>& __b) + { return !__a.equal(__b); } + + + template<typename _CharT, typename _Traits> + class ostreambuf_iterator + : public iterator<output_iterator_tag, void, void, void, void> + { + public: + + + + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + + + template<typename _CharT2> + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + ostreambuf_iterator<_CharT2> >::__type + copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + ostreambuf_iterator<_CharT2>); + + private: + streambuf_type* _M_sbuf; + bool _M_failed; + + public: + + ostreambuf_iterator(ostream_type& __s) noexcept + : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } + + + ostreambuf_iterator(streambuf_type* __s) noexcept + : _M_sbuf(__s), _M_failed(!_M_sbuf) { } + + + ostreambuf_iterator& + operator=(_CharT __c) + { + if (!_M_failed && + _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) + _M_failed = true; + return *this; + } + + + ostreambuf_iterator& + operator*() + { return *this; } + + + ostreambuf_iterator& + operator++(int) + { return *this; } + + + ostreambuf_iterator& + operator++() + { return *this; } + + + bool + failed() const noexcept + { return _M_failed; } + + ostreambuf_iterator& + _M_put(const _CharT* __ws, streamsize __len) + { + if (__builtin_expect(!_M_failed, true) + && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, + false)) + _M_failed = true; + return *this; + } + }; + + + template<typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT> >::__type + copy(istreambuf_iterator<_CharT> __first, + istreambuf_iterator<_CharT> __last, + ostreambuf_iterator<_CharT> __result) + { + if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) + { + bool __ineof; + __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); + if (!__ineof) + __result._M_failed = true; + } + return __result; + } + + template<bool _IsMove, typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT> >::__type + __copy_move_a2(_CharT* __first, _CharT* __last, + ostreambuf_iterator<_CharT> __result) + { + const streamsize __num = __last - __first; + if (__num > 0) + __result._M_put(__first, __num); + return __result; + } + + template<bool _IsMove, typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT> >::__type + __copy_move_a2(const _CharT* __first, const _CharT* __last, + ostreambuf_iterator<_CharT> __result) + { + const streamsize __num = __last - __first; + if (__num > 0) + __result._M_put(__first, __num); + return __result; + } + + template<bool _IsMove, typename _CharT> + 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 typename __is_iterator_type::streambuf_type streambuf_type; + typedef typename traits_type::int_type int_type; + + if (__first._M_sbuf && !__last._M_sbuf) + { + streambuf_type* __sb = __first._M_sbuf; + int_type __c = __sb->sgetc(); + while (!traits_type::eq_int_type(__c, traits_type::eof())) + { + const streamsize __n = __sb->egptr() - __sb->gptr(); + if (__n > 1) + { + traits_type::copy(__result, __sb->gptr(), __n); + __sb->__safe_gbump(__n); + __result += __n; + __c = __sb->underflow(); + } + else + { + *__result++ = traits_type::to_char_type(__c); + __c = __sb->snextc(); + } + } + } + return __result; + } + + template<typename _CharT> + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + istreambuf_iterator<_CharT> >::__type + find(istreambuf_iterator<_CharT> __first, + istreambuf_iterator<_CharT> __last, const _CharT& __val) + { + 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; + + 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()) + && !traits_type::eq_int_type(__c, __ival)) + { + streamsize __n = __sb->egptr() - __sb->gptr(); + if (__n > 1) + { + const _CharT* __p = traits_type::find(__sb->gptr(), + __n, __val); + if (__p) + __n = __p - __sb->gptr(); + __sb->__safe_gbump(__n); + __c = __sb->sgetc(); + } + else + __c = __sb->snextc(); + } + + if (!traits_type::eq_int_type(__c, traits_type::eof())) + __first._M_c = __c; + else + __first._M_sbuf = 0; + } + return __first; + } + + + + +} +# 49 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 71 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _Tp> + void + __convert_to_v(const char*, _Tp&, ios_base::iostate&, + const __c_locale&) throw(); + + + template<> + void + __convert_to_v(const char*, float&, ios_base::iostate&, + const __c_locale&) throw(); + + template<> + void + __convert_to_v(const char*, double&, ios_base::iostate&, + const __c_locale&) throw(); + + template<> + void + __convert_to_v(const char*, long double&, ios_base::iostate&, + const __c_locale&) throw(); + + + + template<typename _CharT, typename _Traits> + struct __pad + { + static void + _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, + const _CharT* __olds, streamsize __newlen, streamsize __oldlen); + }; + + + + + + + template<typename _CharT> + _CharT* + __add_grouping(_CharT* __s, _CharT __sep, + const char* __gbeg, size_t __gsize, + const _CharT* __first, const _CharT* __last); + + + + + template<typename _CharT> + inline + ostreambuf_iterator<_CharT> + __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) + { + __s._M_put(__ws, __len); + return __s; + } + + + template<typename _CharT, typename _OutIter> + inline + _OutIter + __write(_OutIter __s, const _CharT* __ws, int __len) + { + for (int __j = 0; __j < __len; __j++, ++__s) + *__s = __ws[__j]; + return __s; + } +# 149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _CharT> + class __ctype_abstract_base : public locale::facet, public ctype_base + { + public: + + + typedef _CharT char_type; +# 168 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + bool + is(mask __m, char_type __c) const + { return this->do_is(__m, __c); } +# 185 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + is(const char_type *__lo, const char_type *__hi, mask *__vec) const + { return this->do_is(__lo, __hi, __vec); } +# 201 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + scan_is(mask __m, const char_type* __lo, const char_type* __hi) const + { return this->do_scan_is(__m, __lo, __hi); } +# 217 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + scan_not(mask __m, const char_type* __lo, const char_type* __hi) const + { return this->do_scan_not(__m, __lo, __hi); } +# 231 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + toupper(char_type __c) const + { return this->do_toupper(__c); } +# 246 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + toupper(char_type *__lo, const char_type* __hi) const + { return this->do_toupper(__lo, __hi); } +# 260 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + tolower(char_type __c) const + { return this->do_tolower(__c); } +# 275 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + tolower(char_type* __lo, const char_type* __hi) const + { return this->do_tolower(__lo, __hi); } +# 292 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + widen(char __c) const + { return this->do_widen(__c); } +# 311 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char* + widen(const char* __lo, const char* __hi, char_type* __to) const + { return this->do_widen(__lo, __hi, __to); } +# 330 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char + narrow(char_type __c, char __dfault) const + { return this->do_narrow(__c, __dfault); } +# 352 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const + { return this->do_narrow(__lo, __hi, __dfault, __to); } + + protected: + explicit + __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } + + virtual + ~__ctype_abstract_base() { } +# 377 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual bool + do_is(mask __m, char_type __c) const = 0; +# 396 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_is(const char_type* __lo, const char_type* __hi, + mask* __vec) const = 0; +# 415 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_scan_is(mask __m, const char_type* __lo, + const char_type* __hi) const = 0; +# 434 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_scan_not(mask __m, const char_type* __lo, + const char_type* __hi) const = 0; +# 452 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_toupper(char_type __c) const = 0; +# 469 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const = 0; +# 485 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_tolower(char_type __c) const = 0; +# 502 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const = 0; +# 521 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_widen(char __c) const = 0; +# 542 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; +# 563 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char + do_narrow(char_type __c, char __dfault) const = 0; +# 588 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const = 0; + }; +# 611 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _CharT> + class ctype : public __ctype_abstract_base<_CharT> + { + public: + + typedef _CharT char_type; + typedef typename __ctype_abstract_base<_CharT>::mask mask; + + + static locale::id id; + + explicit + ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } + + protected: + virtual + ~ctype(); + + virtual bool + do_is(mask __m, char_type __c) const; + + virtual const char_type* + do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; + + virtual const char_type* + do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; + + virtual const char_type* + do_scan_not(mask __m, const char_type* __lo, + const char_type* __hi) const; + + virtual char_type + do_toupper(char_type __c) const; + + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const; + + virtual char_type + do_tolower(char_type __c) const; + + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const; + + virtual char_type + do_widen(char __c) const; + + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __dest) const; + + virtual char + do_narrow(char_type, char __dfault) const; + + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const; + }; + + template<typename _CharT> + locale::id ctype<_CharT>::id; +# 680 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<> + class ctype<char> : public locale::facet, public ctype_base + { + public: + + + typedef char char_type; + + protected: + + __c_locale _M_c_locale_ctype; + bool _M_del; + __to_type _M_toupper; + __to_type _M_tolower; + const mask* _M_table; + mutable char _M_widen_ok; + mutable char _M_widen[1 + static_cast<unsigned char>(-1)]; + mutable char _M_narrow[1 + static_cast<unsigned char>(-1)]; + mutable char _M_narrow_ok; + + + public: + + static locale::id id; + + static const size_t table_size = 1 + static_cast<unsigned char>(-1); +# 717 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); +# 730 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, + size_t __refs = 0); +# 743 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + inline bool + is(mask __m, char __c) const; +# 758 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + inline const char* + is(const char* __lo, const char* __hi, mask* __vec) const; +# 772 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + inline const char* + scan_is(mask __m, const char* __lo, const char* __hi) const; +# 786 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + inline const char* + scan_not(mask __m, const char* __lo, const char* __hi) const; +# 801 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + toupper(char_type __c) const + { return this->do_toupper(__c); } +# 818 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + toupper(char_type *__lo, const char_type* __hi) const + { return this->do_toupper(__lo, __hi); } +# 834 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + tolower(char_type __c) const + { return this->do_tolower(__c); } +# 851 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + tolower(char_type* __lo, const char_type* __hi) const + { return this->do_tolower(__lo, __hi); } +# 871 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + widen(char __c) const + { + if (_M_widen_ok) + return _M_widen[static_cast<unsigned char>(__c)]; + this->_M_widen_init(); + return this->do_widen(__c); + } +# 898 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char* + widen(const char* __lo, const char* __hi, char_type* __to) const + { + if (_M_widen_ok == 1) + { + __builtin_memcpy(__to, __lo, __hi - __lo); + return __hi; + } + if (!_M_widen_ok) + _M_widen_init(); + return this->do_widen(__lo, __hi, __to); + } +# 929 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char + narrow(char_type __c, char __dfault) const + { + if (_M_narrow[static_cast<unsigned char>(__c)]) + return _M_narrow[static_cast<unsigned char>(__c)]; + const char __t = do_narrow(__c, __dfault); + if (__t != __dfault) + _M_narrow[static_cast<unsigned char>(__c)] = __t; + return __t; + } +# 962 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + const char_type* + narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const + { + if (__builtin_expect(_M_narrow_ok == 1, true)) + { + __builtin_memcpy(__to, __lo, __hi - __lo); + return __hi; + } + if (!_M_narrow_ok) + _M_narrow_init(); + return this->do_narrow(__lo, __hi, __dfault, __to); + } + + + + + + const mask* + table() const throw() + { return _M_table; } + + + static const mask* + classic_table() throw(); + protected: + + + + + + + + virtual + ~ctype(); +# 1011 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_toupper(char_type __c) const; +# 1028 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const; +# 1044 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_tolower(char_type __c) const; +# 1061 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const; +# 1081 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_widen(char __c) const + { return __c; } +# 1104 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const + { + __builtin_memcpy(__to, __lo, __hi - __lo); + return __hi; + } +# 1130 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char + do_narrow(char_type __c, char __dfault) const + { return __c; } +# 1156 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const + { + __builtin_memcpy(__to, __lo, __hi - __lo); + return __hi; + } + + private: + void _M_narrow_init() const; + void _M_widen_init() const; + }; +# 1181 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<> + class ctype<wchar_t> : public __ctype_abstract_base<wchar_t> + { + public: + + + typedef wchar_t char_type; + typedef wctype_t __wmask_type; + + protected: + __c_locale _M_c_locale_ctype; + + + bool _M_narrow_ok; + char _M_narrow[128]; + wint_t _M_widen[1 + static_cast<unsigned char>(-1)]; + + + mask _M_bit[16]; + __wmask_type _M_wmask[16]; + + public: + + + static locale::id id; +# 1214 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + ctype(size_t __refs = 0); +# 1225 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + ctype(__c_locale __cloc, size_t __refs = 0); + + protected: + __wmask_type + _M_convert_to_wmask(const mask __m) const throw(); + + + virtual + ~ctype(); +# 1249 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual bool + do_is(mask __m, char_type __c) const; +# 1268 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; +# 1286 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; +# 1304 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_scan_not(mask __m, const char_type* __lo, + const char_type* __hi) const; +# 1321 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_toupper(char_type __c) const; +# 1338 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const; +# 1354 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_tolower(char_type __c) const; +# 1371 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const; +# 1391 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_widen(char __c) const; +# 1413 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const; +# 1436 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char + do_narrow(char_type __c, char __dfault) const; +# 1462 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const; + + + void + _M_initialize_ctype() throw(); + }; + + + + template<typename _CharT> + class ctype_byname : public ctype<_CharT> + { + public: + typedef typename ctype<_CharT>::mask mask; + + explicit + ctype_byname(const char* __s, size_t __refs = 0); + + + explicit + ctype_byname(const string& __s, size_t __refs = 0) + : ctype_byname(__s.c_str(), __refs) { } + + + protected: + virtual + ~ctype_byname() { }; + }; + + + template<> + class ctype_byname<char> : public ctype<char> + { + public: + explicit + ctype_byname(const char* __s, size_t __refs = 0); + + + explicit + ctype_byname(const string& __s, size_t __refs = 0); + + + protected: + virtual + ~ctype_byname(); + }; + + + template<> + class ctype_byname<wchar_t> : public ctype<wchar_t> + { + public: + explicit + ctype_byname(const char* __s, size_t __refs = 0); + + + explicit + ctype_byname(const string& __s, size_t __refs = 0); + + + protected: + virtual + ~ctype_byname(); + }; + + + +} + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/ctype_inline.h" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/aarch64-linux-gnu/bits/ctype_inline.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + bool + ctype<char>:: + is(mask __m, char __c) const + { return _M_table[static_cast<unsigned char>(__c)] & __m; } + + const char* + ctype<char>:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; + return __high; + } + + const char* + ctype<char>:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) + ++__low; + return __low; + } + + const char* + ctype<char>:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) + ++__low; + return __low; + } + + +} +# 1535 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + class __num_base + { + public: + + + enum + { + _S_ominus, + _S_oplus, + _S_ox, + _S_oX, + _S_odigits, + _S_odigits_end = _S_odigits + 16, + _S_oudigits = _S_odigits_end, + _S_oudigits_end = _S_oudigits + 16, + _S_oe = _S_odigits + 14, + _S_oE = _S_oudigits + 14, + _S_oend = _S_oudigits_end + }; + + + + + + + static const char* _S_atoms_out; + + + + static const char* _S_atoms_in; + + enum + { + _S_iminus, + _S_iplus, + _S_ix, + _S_iX, + _S_izero, + _S_ie = _S_izero + 14, + _S_iE = _S_izero + 20, + _S_iend = 26 + }; + + + + static void + _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); + }; + + template<typename _CharT> + struct __numpunct_cache : public locale::facet + { + const char* _M_grouping; + size_t _M_grouping_size; + bool _M_use_grouping; + const _CharT* _M_truename; + size_t _M_truename_size; + const _CharT* _M_falsename; + size_t _M_falsename_size; + _CharT _M_decimal_point; + _CharT _M_thousands_sep; + + + + + + _CharT _M_atoms_out[__num_base::_S_oend]; + + + + + + _CharT _M_atoms_in[__num_base::_S_iend]; + + bool _M_allocated; + + __numpunct_cache(size_t __refs = 0) + : facet(__refs), _M_grouping(0), _M_grouping_size(0), + _M_use_grouping(false), + _M_truename(0), _M_truename_size(0), _M_falsename(0), + _M_falsename_size(0), _M_decimal_point(_CharT()), + _M_thousands_sep(_CharT()), _M_allocated(false) + { } + + ~__numpunct_cache(); + + void + _M_cache(const locale& __loc); + + private: + __numpunct_cache& + operator=(const __numpunct_cache&); + + explicit + __numpunct_cache(const __numpunct_cache&); + }; + + template<typename _CharT> + __numpunct_cache<_CharT>::~__numpunct_cache() + { + if (_M_allocated) + { + delete [] _M_grouping; + delete [] _M_truename; + delete [] _M_falsename; + } + } + +namespace __cxx11 { +# 1665 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _CharT> + class numpunct : public locale::facet + { + public: + + + + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + typedef __numpunct_cache<_CharT> __cache_type; + + protected: + __cache_type* _M_data; + + public: + + static locale::id id; + + + + + + + explicit + numpunct(size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_numpunct(); } +# 1703 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + numpunct(__cache_type* __cache, size_t __refs = 0) + : facet(__refs), _M_data(__cache) + { _M_initialize_numpunct(); } +# 1717 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + numpunct(__c_locale __cloc, size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_numpunct(__cloc); } +# 1731 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + decimal_point() const + { return this->do_decimal_point(); } +# 1744 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + char_type + thousands_sep() const + { return this->do_thousands_sep(); } +# 1775 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + string + grouping() const + { return this->do_grouping(); } +# 1788 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + string_type + truename() const + { return this->do_truename(); } +# 1801 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + string_type + falsename() const + { return this->do_falsename(); } + + protected: + + virtual + ~numpunct(); +# 1818 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_decimal_point() const + { return _M_data->_M_decimal_point; } +# 1830 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual char_type + do_thousands_sep() const + { return _M_data->_M_thousands_sep; } +# 1843 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual string + do_grouping() const + { return _M_data->_M_grouping; } +# 1856 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual string_type + do_truename() const + { return _M_data->_M_truename; } +# 1869 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual string_type + do_falsename() const + { return _M_data->_M_falsename; } + + + void + _M_initialize_numpunct(__c_locale __cloc = 0); + }; + + template<typename _CharT> + locale::id numpunct<_CharT>::id; + + template<> + numpunct<char>::~numpunct(); + + template<> + void + numpunct<char>::_M_initialize_numpunct(__c_locale __cloc); + + + template<> + numpunct<wchar_t>::~numpunct(); + + template<> + void + numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc); + + + + template<typename _CharT> + class numpunct_byname : public numpunct<_CharT> + { + public: + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + explicit + numpunct_byname(const char* __s, size_t __refs = 0) + : numpunct<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + __c_locale __tmp; + this->_S_create_c_locale(__tmp, __s); + this->_M_initialize_numpunct(__tmp); + this->_S_destroy_c_locale(__tmp); + } + } + + + explicit + numpunct_byname(const string& __s, size_t __refs = 0) + : numpunct_byname(__s.c_str(), __refs) { } + + + protected: + virtual + ~numpunct_byname() { } + }; + +} + + +# 1947 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _CharT, typename _InIter> + class num_get : public locale::facet + { + public: + + + + typedef _CharT char_type; + typedef _InIter iter_type; + + + + static locale::id id; +# 1968 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + num_get(size_t __refs = 0) : facet(__refs) { } +# 1994 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, bool& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } +# 2031 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned short& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned int& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long long& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long long& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } +# 2091 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, float& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, double& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long double& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } +# 2134 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + get(iter_type __in, iter_type __end, ios_base& __io, + ios_base::iostate& __err, void*& __v) const + { return this->do_get(__in, __end, __io, __err, __v); } + + protected: + + virtual ~num_get() { } + + __attribute ((__abi_tag__ ("cxx11"))) + iter_type + _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, + string&) const; + + template<typename _ValueT> + __attribute ((__abi_tag__ ("cxx11"))) + iter_type + _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, + _ValueT&) const; + + template<typename _CharT2> + typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type + _M_find(const _CharT2*, size_t __len, _CharT2 __c) const + { + int __ret = -1; + if (__len <= 10) + { + if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) + __ret = __c - _CharT2('0'); + } + else + { + if (__c >= _CharT2('0') && __c <= _CharT2('9')) + __ret = __c - _CharT2('0'); + else if (__c >= _CharT2('a') && __c <= _CharT2('f')) + __ret = 10 + (__c - _CharT2('a')); + else if (__c >= _CharT2('A') && __c <= _CharT2('F')) + __ret = 10 + (__c - _CharT2('A')); + } + return __ret; + } + + template<typename _CharT2> + typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value, + int>::__type + _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const + { + int __ret = -1; + const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); + if (__q) + { + __ret = __q - __zero; + if (__ret > 15) + __ret -= 6; + } + return __ret; + } +# 2207 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned short& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned int& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + virtual iter_type + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } + + + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; + + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, + double&) const; + + + + + + + + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, + long double&) const; + + + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; +# 2270 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + }; + + template<typename _CharT, typename _InIter> + locale::id num_get<_CharT, _InIter>::id; +# 2288 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + template<typename _CharT, typename _OutIter> + class num_put : public locale::facet + { + public: + + + + typedef _CharT char_type; + typedef _OutIter iter_type; + + + + static locale::id id; +# 2309 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + explicit + num_put(size_t __refs = 0) : facet(__refs) { } +# 2327 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const + { return this->do_put(__s, __io, __fill, __v); } +# 2369 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, long __v) const + { return this->do_put(__s, __io, __fill, __v); } + + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long __v) const + { return this->do_put(__s, __io, __fill, __v); } + + + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const + { return this->do_put(__s, __io, __fill, __v); } + + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long long __v) const + { return this->do_put(__s, __io, __fill, __v); } +# 2432 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, double __v) const + { return this->do_put(__s, __io, __fill, __v); } + + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, + long double __v) const + { return this->do_put(__s, __io, __fill, __v); } +# 2457 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, + const void* __v) const + { return this->do_put(__s, __io, __fill, __v); } + + protected: + template<typename _ValueT> + iter_type + _M_insert_float(iter_type, ios_base& __io, char_type __fill, + char __mod, _ValueT __v) const; + + void + _M_group_float(const char* __grouping, size_t __grouping_size, + char_type __sep, const char_type* __p, char_type* __new, + char_type* __cs, int& __len) const; + + template<typename _ValueT> + iter_type + _M_insert_int(iter_type, ios_base& __io, char_type __fill, + _ValueT __v) const; + + void + _M_group_int(const char* __grouping, size_t __grouping_size, + char_type __sep, ios_base& __io, char_type* __new, + char_type* __cs, int& __len) const; + + void + _M_pad(char_type __fill, streamsize __w, ios_base& __io, + char_type* __new, const char_type* __cs, int& __len) const; + + + virtual + ~num_put() { }; +# 2505 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 3 + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; + + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } + + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } + + + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, + long long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } + + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } + + + virtual iter_type + do_put(iter_type, ios_base&, char_type, double) const; + + + + + + + virtual iter_type + do_put(iter_type, ios_base&, char_type, long double) const; + + + virtual iter_type + do_put(iter_type, ios_base&, char_type, const void*) const; + + + + + + + + }; + + template <typename _CharT, typename _OutIter> + locale::id num_put<_CharT, _OutIter>::id; + + + + + + + + + + template<typename _CharT> + inline bool + isspace(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); } + + + template<typename _CharT> + inline bool + isprint(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); } + + + template<typename _CharT> + inline bool + iscntrl(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); } + + + template<typename _CharT> + inline bool + isupper(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); } + + + template<typename _CharT> + inline bool + islower(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); } + + + template<typename _CharT> + inline bool + isalpha(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); } + + + template<typename _CharT> + inline bool + isdigit(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); } + + + template<typename _CharT> + inline bool + ispunct(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); } + + + template<typename _CharT> + inline bool + isxdigit(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); } + + + template<typename _CharT> + inline bool + isalnum(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); } + + + template<typename _CharT> + inline bool + isgraph(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); } + + + + template<typename _CharT> + inline bool + isblank(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::blank, __c); } + + + + template<typename _CharT> + inline _CharT + toupper(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).toupper(__c); } + + + template<typename _CharT> + inline _CharT + tolower(_CharT __c, const locale& __loc) + { return use_facet<ctype<_CharT> >(__loc).tolower(__c); } + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + template<typename _Facet> + struct __use_cache + { + const _Facet* + operator() (const locale& __loc) const; + }; + + + template<typename _CharT> + struct __use_cache<__numpunct_cache<_CharT> > + { + const __numpunct_cache<_CharT>* + operator() (const locale& __loc) const + { + const size_t __i = numpunct<_CharT>::id._M_id(); + const locale::facet** __caches = __loc._M_impl->_M_caches; + if (!__caches[__i]) + { + __numpunct_cache<_CharT>* __tmp = 0; + try + { + __tmp = new __numpunct_cache<_CharT>; + __tmp->_M_cache(__loc); + } + catch(...) + { + delete __tmp; + throw; + } + __loc._M_impl->_M_install_cache(__tmp, __i); + } + return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]); + } + }; + + template<typename _CharT> + void + __numpunct_cache<_CharT>::_M_cache(const locale& __loc) + { + const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc); + + char* __grouping = 0; + _CharT* __truename = 0; + _CharT* __falsename = 0; + try + { + const string& __g = __np.grouping(); + _M_grouping_size = __g.size(); + __grouping = new char[_M_grouping_size]; + __g.copy(__grouping, _M_grouping_size); + _M_use_grouping = (_M_grouping_size + && static_cast<signed char>(__grouping[0]) > 0 + && (__grouping[0] + != __gnu_cxx::__numeric_traits<char>::__max)); + + const basic_string<_CharT>& __tn = __np.truename(); + _M_truename_size = __tn.size(); + __truename = new _CharT[_M_truename_size]; + __tn.copy(__truename, _M_truename_size); + + const basic_string<_CharT>& __fn = __np.falsename(); + _M_falsename_size = __fn.size(); + __falsename = new _CharT[_M_falsename_size]; + __fn.copy(__falsename, _M_falsename_size); + + _M_decimal_point = __np.decimal_point(); + _M_thousands_sep = __np.thousands_sep(); + + const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc); + __ct.widen(__num_base::_S_atoms_out, + __num_base::_S_atoms_out + + __num_base::_S_oend, _M_atoms_out); + __ct.widen(__num_base::_S_atoms_in, + __num_base::_S_atoms_in + + __num_base::_S_iend, _M_atoms_in); + + _M_grouping = __grouping; + _M_truename = __truename; + _M_falsename = __falsename; + _M_allocated = true; + } + catch(...) + { + delete [] __grouping; + delete [] __truename; + delete [] __falsename; + throw; + } + } +# 139 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + __attribute__ ((__pure__)) bool + __verify_grouping(const char* __grouping, size_t __grouping_size, + const string& __grouping_tmp) throw (); + + + + template<typename _CharT, typename _InIter> + __attribute ((__abi_tag__ ("cxx11"))) + _InIter + num_get<_CharT, _InIter>:: + _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, + ios_base::iostate& __err, string& __xtrc) const + { + typedef char_traits<_CharT> __traits_type; + typedef __numpunct_cache<_CharT> __cache_type; + __use_cache<__cache_type> __uc; + const locale& __loc = __io._M_getloc(); + const __cache_type* __lc = __uc(__loc); + const _CharT* __lit = __lc->_M_atoms_in; + char_type __c = char_type(); + + + bool __testeof = __beg == __end; + + + if (!__testeof) + { + __c = *__beg; + const bool __plus = __c == __lit[__num_base::_S_iplus]; + if ((__plus || __c == __lit[__num_base::_S_iminus]) + && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + && !(__c == __lc->_M_decimal_point)) + { + __xtrc += __plus ? '+' : '-'; + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + } + + + bool __found_mantissa = false; + int __sep_pos = 0; + while (!__testeof) + { + if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + || __c == __lc->_M_decimal_point) + break; + else if (__c == __lit[__num_base::_S_izero]) + { + if (!__found_mantissa) + { + __xtrc += '0'; + __found_mantissa = true; + } + ++__sep_pos; + + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + else + break; + } + + + bool __found_dec = false; + bool __found_sci = false; + string __found_grouping; + if (__lc->_M_use_grouping) + __found_grouping.reserve(32); + const char_type* __lit_zero = __lit + __num_base::_S_izero; + + if (!__lc->_M_allocated) + + while (!__testeof) + { + const int __digit = _M_find(__lit_zero, 10, __c); + if (__digit != -1) + { + __xtrc += '0' + __digit; + __found_mantissa = true; + } + else if (__c == __lc->_M_decimal_point + && !__found_dec && !__found_sci) + { + __xtrc += '.'; + __found_dec = true; + } + else if ((__c == __lit[__num_base::_S_ie] + || __c == __lit[__num_base::_S_iE]) + && !__found_sci && __found_mantissa) + { + + __xtrc += 'e'; + __found_sci = true; + + + if (++__beg != __end) + { + __c = *__beg; + const bool __plus = __c == __lit[__num_base::_S_iplus]; + if (__plus || __c == __lit[__num_base::_S_iminus]) + __xtrc += __plus ? '+' : '-'; + else + continue; + } + else + { + __testeof = true; + break; + } + } + else + break; + + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + else + while (!__testeof) + { + + + if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + { + if (!__found_dec && !__found_sci) + { + + + if (__sep_pos) + { + __found_grouping += static_cast<char>(__sep_pos); + __sep_pos = 0; + } + else + { + + + __xtrc.clear(); + break; + } + } + else + break; + } + else if (__c == __lc->_M_decimal_point) + { + if (!__found_dec && !__found_sci) + { + + + + if (__found_grouping.size()) + __found_grouping += static_cast<char>(__sep_pos); + __xtrc += '.'; + __found_dec = true; + } + else + break; + } + else + { + const char_type* __q = + __traits_type::find(__lit_zero, 10, __c); + if (__q) + { + __xtrc += '0' + (__q - __lit_zero); + __found_mantissa = true; + ++__sep_pos; + } + else if ((__c == __lit[__num_base::_S_ie] + || __c == __lit[__num_base::_S_iE]) + && !__found_sci && __found_mantissa) + { + + if (__found_grouping.size() && !__found_dec) + __found_grouping += static_cast<char>(__sep_pos); + __xtrc += 'e'; + __found_sci = true; + + + if (++__beg != __end) + { + __c = *__beg; + const bool __plus = __c == __lit[__num_base::_S_iplus]; + if ((__plus || __c == __lit[__num_base::_S_iminus]) + && !(__lc->_M_use_grouping + && __c == __lc->_M_thousands_sep) + && !(__c == __lc->_M_decimal_point)) + __xtrc += __plus ? '+' : '-'; + else + continue; + } + else + { + __testeof = true; + break; + } + } + else + break; + } + + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + + + + if (__found_grouping.size()) + { + + if (!__found_dec && !__found_sci) + __found_grouping += static_cast<char>(__sep_pos); + + if (!std::__verify_grouping(__lc->_M_grouping, + __lc->_M_grouping_size, + __found_grouping)) + __err = ios_base::failbit; + } + + return __beg; + } + + template<typename _CharT, typename _InIter> + template<typename _ValueT> + __attribute ((__abi_tag__ ("cxx11"))) + _InIter + num_get<_CharT, _InIter>:: + _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, + ios_base::iostate& __err, _ValueT& __v) const + { + 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; + __use_cache<__cache_type> __uc; + const locale& __loc = __io._M_getloc(); + const __cache_type* __lc = __uc(__loc); + const _CharT* __lit = __lc->_M_atoms_in; + char_type __c = char_type(); + + + const ios_base::fmtflags __basefield = __io.flags() + & ios_base::basefield; + const bool __oct = __basefield == ios_base::oct; + int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); + + + bool __testeof = __beg == __end; + + + bool __negative = false; + if (!__testeof) + { + __c = *__beg; + __negative = __c == __lit[__num_base::_S_iminus]; + if ((__negative || __c == __lit[__num_base::_S_iplus]) + && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + && !(__c == __lc->_M_decimal_point)) + { + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + } + + + + bool __found_zero = false; + int __sep_pos = 0; + while (!__testeof) + { + if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + || __c == __lc->_M_decimal_point) + break; + else if (__c == __lit[__num_base::_S_izero] + && (!__found_zero || __base == 10)) + { + __found_zero = true; + ++__sep_pos; + if (__basefield == 0) + __base = 8; + if (__base == 8) + __sep_pos = 0; + } + else if (__found_zero + && (__c == __lit[__num_base::_S_ix] + || __c == __lit[__num_base::_S_iX])) + { + if (__basefield == 0) + __base = 16; + if (__base == 16) + { + __found_zero = false; + __sep_pos = 0; + } + else + break; + } + else + break; + + if (++__beg != __end) + { + __c = *__beg; + if (!__found_zero) + break; + } + else + __testeof = true; + } + + + + const size_t __len = (__base == 16 ? __num_base::_S_iend + - __num_base::_S_izero : __base); + + + 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; + const __unsigned_type __smax = __max / __base; + __unsigned_type __result = 0; + int __digit = 0; + const char_type* __lit_zero = __lit + __num_base::_S_izero; + + if (!__lc->_M_allocated) + + while (!__testeof) + { + __digit = _M_find(__lit_zero, __len, __c); + if (__digit == -1) + break; + + if (__result > __smax) + __testoverflow = true; + else + { + __result *= __base; + __testoverflow |= __result > __max - __digit; + __result += __digit; + ++__sep_pos; + } + + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + else + while (!__testeof) + { + + + if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + { + + + if (__sep_pos) + { + __found_grouping += static_cast<char>(__sep_pos); + __sep_pos = 0; + } + else + { + __testfail = true; + break; + } + } + else if (__c == __lc->_M_decimal_point) + break; + else + { + const char_type* __q = + __traits_type::find(__lit_zero, __len, __c); + if (!__q) + break; + + __digit = __q - __lit_zero; + if (__digit > 15) + __digit -= 6; + if (__result > __smax) + __testoverflow = true; + else + { + __result *= __base; + __testoverflow |= __result > __max - __digit; + __result += __digit; + ++__sep_pos; + } + } + + if (++__beg != __end) + __c = *__beg; + else + __testeof = true; + } + + + + if (__found_grouping.size()) + { + + __found_grouping += static_cast<char>(__sep_pos); + + if (!std::__verify_grouping(__lc->_M_grouping, + __lc->_M_grouping_size, + __found_grouping)) + __err = ios_base::failbit; + } + + + + if ((!__sep_pos && !__found_zero && !__found_grouping.size()) + || __testfail) + { + __v = 0; + __err = ios_base::failbit; + } + else if (__testoverflow) + { + if (__negative + && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) + __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; + else + __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; + __err = ios_base::failbit; + } + else + __v = __negative ? -__result : __result; + + if (__testeof) + __err |= ios_base::eofbit; + return __beg; + } + + + + template<typename _CharT, typename _InIter> + _InIter + num_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, bool& __v) const + { + if (!(__io.flags() & ios_base::boolalpha)) + { + + + + long __l = -1; + __beg = _M_extract_int(__beg, __end, __io, __err, __l); + if (__l == 0 || __l == 1) + __v = bool(__l); + else + { + + + __v = true; + __err = ios_base::failbit; + if (__beg == __end) + __err |= ios_base::eofbit; + } + } + else + { + + typedef __numpunct_cache<_CharT> __cache_type; + __use_cache<__cache_type> __uc; + const locale& __loc = __io._M_getloc(); + const __cache_type* __lc = __uc(__loc); + + bool __testf = true; + bool __testt = true; + bool __donef = __lc->_M_falsename_size == 0; + bool __donet = __lc->_M_truename_size == 0; + bool __testeof = false; + size_t __n = 0; + while (!__donef || !__donet) + { + if (__beg == __end) + { + __testeof = true; + break; + } + + const char_type __c = *__beg; + + if (!__donef) + __testf = __c == __lc->_M_falsename[__n]; + + if (!__testf && __donet) + break; + + if (!__donet) + __testt = __c == __lc->_M_truename[__n]; + + if (!__testt && __donef) + break; + + if (!__testt && !__testf) + break; + + ++__n; + ++__beg; + + __donef = !__testf || __n >= __lc->_M_falsename_size; + __donet = !__testt || __n >= __lc->_M_truename_size; + } + if (__testf && __n == __lc->_M_falsename_size && __n) + { + __v = false; + if (__testt && __n == __lc->_M_truename_size) + __err = ios_base::failbit; + else + __err = __testeof ? ios_base::eofbit : ios_base::goodbit; + } + else if (__testt && __n == __lc->_M_truename_size && __n) + { + __v = true; + __err = __testeof ? ios_base::eofbit : ios_base::goodbit; + } + else + { + + + __v = false; + __err = ios_base::failbit; + if (__testeof) + __err |= ios_base::eofbit; + } + } + return __beg; + } + + template<typename _CharT, typename _InIter> + _InIter + num_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, float& __v) const + { + string __xtrc; + __xtrc.reserve(32); + __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); + std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template<typename _CharT, typename _InIter> + _InIter + num_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, double& __v) const + { + string __xtrc; + __xtrc.reserve(32); + __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); + std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } +# 735 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + template<typename _CharT, typename _InIter> + _InIter + num_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long double& __v) const + { + string __xtrc; + __xtrc.reserve(32); + __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); + std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template<typename _CharT, typename _InIter> + _InIter + num_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, void*& __v) const + { + + typedef ios_base::fmtflags fmtflags; + const fmtflags __fmt = __io.flags(); + __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); + + typedef __gnu_cxx::__conditional_type<(sizeof(void*) + <= sizeof(unsigned long)), + unsigned long, unsigned long long>::__type _UIntPtrType; + + _UIntPtrType __ul; + __beg = _M_extract_int(__beg, __end, __io, __err, __ul); + + + __io.flags(__fmt); + + __v = reinterpret_cast<void*>(__ul); + return __beg; + } + + + + template<typename _CharT, typename _OutIter> + void + num_put<_CharT, _OutIter>:: + _M_pad(_CharT __fill, streamsize __w, ios_base& __io, + _CharT* __new, const _CharT* __cs, int& __len) const + { + + + __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, + __cs, __w, __len); + __len = static_cast<int>(__w); + } + + + + template<typename _CharT, typename _ValueT> + int + __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, + ios_base::fmtflags __flags, bool __dec) + { + _CharT* __buf = __bufend; + if (__builtin_expect(__dec, true)) + { + + do + { + *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; + __v /= 10; + } + while (__v != 0); + } + else if ((__flags & ios_base::basefield) == ios_base::oct) + { + + do + { + *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; + __v >>= 3; + } + while (__v != 0); + } + else + { + + const bool __uppercase = __flags & ios_base::uppercase; + const int __case_offset = __uppercase ? __num_base::_S_oudigits + : __num_base::_S_odigits; + do + { + *--__buf = __lit[(__v & 0xf) + __case_offset]; + __v >>= 4; + } + while (__v != 0); + } + return __bufend - __buf; + } + + + + template<typename _CharT, typename _OutIter> + void + num_put<_CharT, _OutIter>:: + _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, + ios_base&, _CharT* __new, _CharT* __cs, int& __len) const + { + _CharT* __p = std::__add_grouping(__new, __sep, __grouping, + __grouping_size, __cs, __cs + __len); + __len = __p - __new; + } + + template<typename _CharT, typename _OutIter> + template<typename _ValueT> + _OutIter + num_put<_CharT, _OutIter>:: + _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, + _ValueT __v) const + { + using __gnu_cxx::__add_unsigned; + 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); + const _CharT* __lit = __lc->_M_atoms_out; + const ios_base::fmtflags __flags = __io.flags(); + + + const int __ilen = 5 * sizeof(_ValueT); + _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __ilen)); + + + + const ios_base::fmtflags __basefield = __flags & ios_base::basefield; + const bool __dec = (__basefield != ios_base::oct + && __basefield != ios_base::hex); + const __unsigned_type __u = ((__v > 0 || !__dec) + ? __unsigned_type(__v) + : -__unsigned_type(__v)); + int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); + __cs += __ilen - __len; + + + if (__lc->_M_use_grouping) + { + + + _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * (__len + 1) + * 2)); + _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, + __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); + __cs = __cs2 + 2; + } + + + if (__builtin_expect(__dec, true)) + { + + if (__v >= 0) + { + if (bool(__flags & ios_base::showpos) + && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) + *--__cs = __lit[__num_base::_S_oplus], ++__len; + } + else + *--__cs = __lit[__num_base::_S_ominus], ++__len; + } + else if (bool(__flags & ios_base::showbase) && __v) + { + if (__basefield == ios_base::oct) + *--__cs = __lit[__num_base::_S_odigits], ++__len; + else + { + + const bool __uppercase = __flags & ios_base::uppercase; + *--__cs = __lit[__num_base::_S_ox + __uppercase]; + + *--__cs = __lit[__num_base::_S_odigits]; + __len += 2; + } + } + + + const streamsize __w = __io.width(); + if (__w > static_cast<streamsize>(__len)) + { + _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __w)); + _M_pad(__fill, __w, __io, __cs3, __cs, __len); + __cs = __cs3; + } + __io.width(0); + + + + return std::__write(__s, __cs, __len); + } + + template<typename _CharT, typename _OutIter> + void + num_put<_CharT, _OutIter>:: + _M_group_float(const char* __grouping, size_t __grouping_size, + _CharT __sep, const _CharT* __p, _CharT* __new, + _CharT* __cs, int& __len) const + { + + + + const int __declen = __p ? __p - __cs : __len; + _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, + __grouping_size, + __cs, __cs + __declen); + + + int __newlen = __p2 - __new; + if (__p) + { + char_traits<_CharT>::copy(__p2, __p, __len - __declen); + __newlen += __len - __declen; + } + __len = __newlen; + } +# 971 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + template<typename _CharT, typename _OutIter> + template<typename _ValueT> + _OutIter + num_put<_CharT, _OutIter>:: + _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, + _ValueT __v) const + { + typedef __numpunct_cache<_CharT> __cache_type; + __use_cache<__cache_type> __uc; + const locale& __loc = __io._M_getloc(); + const __cache_type* __lc = __uc(__loc); + + + const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); + + const int __max_digits = + __gnu_cxx::__numeric_traits<_ValueT>::__digits10; + + + int __len; + + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + + + + const bool __use_prec = + (__io.flags() & ios_base::floatfield) != ios_base::floatfield; + + + + int __cs_size = __max_digits * 3; + char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); + if (__use_prec) + __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, + __fbuf, __prec, __v); + else + __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, + __fbuf, __v); + + + if (__len >= __cs_size) + { + __cs_size = __len + 1; + __cs = static_cast<char*>(__builtin_alloca(__cs_size)); + if (__use_prec) + __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, + __fbuf, __prec, __v); + else + __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, + __fbuf, __v); + } +# 1044 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); + + _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __len)); + __ctype.widen(__cs, __cs + __len, __ws); + + + _CharT* __wp = 0; + const char* __p = char_traits<char>::find(__cs, __len, '.'); + if (__p) + { + __wp = __ws + (__p - __cs); + *__wp = __lc->_M_decimal_point; + } + + + + + if (__lc->_M_use_grouping + && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' + && __cs[1] >= '0' && __cs[2] >= '0'))) + { + + + _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __len * 2)); + + streamsize __off = 0; + if (__cs[0] == '-' || __cs[0] == '+') + { + __off = 1; + __ws2[0] = __ws[0]; + __len -= 1; + } + + _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, + __lc->_M_thousands_sep, __wp, __ws2 + __off, + __ws + __off, __len); + __len += __off; + + __ws = __ws2; + } + + + const streamsize __w = __io.width(); + if (__w > static_cast<streamsize>(__len)) + { + _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __w)); + _M_pad(__fill, __w, __io, __ws3, __ws, __len); + __ws = __ws3; + } + __io.width(0); + + + + return std::__write(__s, __ws, __len); + } + + template<typename _CharT, typename _OutIter> + _OutIter + num_put<_CharT, _OutIter>:: + do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const + { + const ios_base::fmtflags __flags = __io.flags(); + if ((__flags & ios_base::boolalpha) == 0) + { + const long __l = __v; + __s = _M_insert_int(__s, __io, __fill, __l); + } + else + { + typedef __numpunct_cache<_CharT> __cache_type; + __use_cache<__cache_type> __uc; + const locale& __loc = __io._M_getloc(); + const __cache_type* __lc = __uc(__loc); + + const _CharT* __name = __v ? __lc->_M_truename + : __lc->_M_falsename; + int __len = __v ? __lc->_M_truename_size + : __lc->_M_falsename_size; + + const streamsize __w = __io.width(); + if (__w > static_cast<streamsize>(__len)) + { + const streamsize __plen = __w - __len; + _CharT* __ps + = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __plen)); + + char_traits<_CharT>::assign(__ps, __plen, __fill); + __io.width(0); + + if ((__flags & ios_base::adjustfield) == ios_base::left) + { + __s = std::__write(__s, __name, __len); + __s = std::__write(__s, __ps, __plen); + } + else + { + __s = std::__write(__s, __ps, __plen); + __s = std::__write(__s, __name, __len); + } + return __s; + } + __io.width(0); + __s = std::__write(__s, __name, __len); + } + return __s; + } + + template<typename _CharT, typename _OutIter> + _OutIter + num_put<_CharT, _OutIter>:: + do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const + { return _M_insert_float(__s, __io, __fill, char(), __v); } +# 1169 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + template<typename _CharT, typename _OutIter> + _OutIter + num_put<_CharT, _OutIter>:: + do_put(iter_type __s, ios_base& __io, char_type __fill, + long double __v) const + { return _M_insert_float(__s, __io, __fill, 'L', __v); } + + template<typename _CharT, typename _OutIter> + _OutIter + num_put<_CharT, _OutIter>:: + do_put(iter_type __s, ios_base& __io, char_type __fill, + const void* __v) const + { + const ios_base::fmtflags __flags = __io.flags(); + const ios_base::fmtflags __fmt = ~(ios_base::basefield + | ios_base::uppercase); + __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); + + typedef __gnu_cxx::__conditional_type<(sizeof(const void*) + <= sizeof(unsigned long)), + unsigned long, unsigned long long>::__type _UIntPtrType; + + __s = _M_insert_int(__s, __io, __fill, + reinterpret_cast<_UIntPtrType>(__v)); + __io.flags(__flags); + return __s; + } + + +# 1206 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.tcc" 3 + template<typename _CharT, typename _Traits> + void + __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, + _CharT* __news, const _CharT* __olds, + streamsize __newlen, streamsize __oldlen) + { + const size_t __plen = static_cast<size_t>(__newlen - __oldlen); + const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; + + + if (__adjust == ios_base::left) + { + _Traits::copy(__news, __olds, __oldlen); + _Traits::assign(__news + __oldlen, __plen, __fill); + return; + } + + size_t __mod = 0; + if (__adjust == ios_base::internal) + { + + + + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); + + if (__ctype.widen('-') == __olds[0] + || __ctype.widen('+') == __olds[0]) + { + __news[0] = __olds[0]; + __mod = 1; + ++__news; + } + else if (__ctype.widen('0') == __olds[0] + && __oldlen > 1 + && (__ctype.widen('x') == __olds[1] + || __ctype.widen('X') == __olds[1])) + { + __news[0] = __olds[0]; + __news[1] = __olds[1]; + __mod = 2; + __news += 2; + } + + } + _Traits::assign(__news, __plen, __fill); + _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); + } + + template<typename _CharT> + _CharT* + __add_grouping(_CharT* __s, _CharT __sep, + const char* __gbeg, size_t __gsize, + const _CharT* __first, const _CharT* __last) + { + size_t __idx = 0; + size_t __ctr = 0; + + while (__last - __first > __gbeg[__idx] + && static_cast<signed char>(__gbeg[__idx]) > 0 + && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max) + { + __last -= __gbeg[__idx]; + __idx < __gsize - 1 ? ++__idx : ++__ctr; + } + + while (__first != __last) + *__s++ = *__first++; + + while (__ctr--) + { + *__s++ = __sep; + for (char __i = __gbeg[__idx]; __i > 0; --__i) + *__s++ = *__first++; + } + + while (__idx--) + { + *__s++ = __sep; + for (char __i = __gbeg[__idx]; __i > 0; --__i) + *__s++ = *__first++; + } + + return __s; + } + + + + + extern template class __cxx11:: numpunct<char>; + extern template class __cxx11:: numpunct_byname<char>; + extern template class num_get<char>; + extern template class num_put<char>; + extern template class ctype_byname<char>; + + extern template + const ctype<char>& + use_facet<ctype<char> >(const locale&); + + extern template + const numpunct<char>& + use_facet<numpunct<char> >(const locale&); + + extern template + const num_put<char>& + use_facet<num_put<char> >(const locale&); + + extern template + const num_get<char>& + use_facet<num_get<char> >(const locale&); + + extern template + bool + has_facet<ctype<char> >(const locale&); + + extern template + bool + has_facet<numpunct<char> >(const locale&); + + extern template + bool + has_facet<num_put<char> >(const locale&); + + extern template + bool + has_facet<num_get<char> >(const locale&); + + + extern template class __cxx11:: numpunct<wchar_t>; + extern template class __cxx11:: numpunct_byname<wchar_t>; + extern template class num_get<wchar_t>; + extern template class num_put<wchar_t>; + extern template class ctype_byname<wchar_t>; + + extern template + const ctype<wchar_t>& + use_facet<ctype<wchar_t> >(const locale&); + + extern template + const numpunct<wchar_t>& + use_facet<numpunct<wchar_t> >(const locale&); + + extern template + const num_put<wchar_t>& + use_facet<num_put<wchar_t> >(const locale&); + + extern template + const num_get<wchar_t>& + use_facet<num_get<wchar_t> >(const locale&); + + extern template + bool + has_facet<ctype<wchar_t> >(const locale&); + + extern template + bool + has_facet<numpunct<wchar_t> >(const locale&); + + extern template + bool + has_facet<num_put<wchar_t> >(const locale&); + + extern template + bool + has_facet<num_get<wchar_t> >(const locale&); + + + + +} +# 2652 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/locale_facets.h" 2 3 +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 2 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Facet> + inline const _Facet& + __check_facet(const _Facet* __f) + { + if (!__f) + __throw_bad_cast(); + return *__f; + } +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + template<typename _CharT, typename _Traits> + class basic_ios : public ios_base + { + public: + + + + + + + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + + + + + typedef ctype<_CharT> __ctype_type; + typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > + __num_put_type; + typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > + __num_get_type; + + + + protected: + basic_ostream<_CharT, _Traits>* _M_tie; + mutable char_type _M_fill; + mutable bool _M_fill_init; + basic_streambuf<_CharT, _Traits>* _M_streambuf; + + + const __ctype_type* _M_ctype; + + const __num_put_type* _M_num_put; + + const __num_get_type* _M_num_get; + + public: +# 117 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + explicit operator bool() const + { return !this->fail(); } + + + + + + bool + operator!() const + { return this->fail(); } +# 136 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + iostate + rdstate() const + { return _M_streambuf_state; } +# 147 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + void + clear(iostate __state = goodbit); + + + + + + + + void + setstate(iostate __state) + { this->clear(this->rdstate() | __state); } + + + + + void + _M_setstate(iostate __state) + { + + + _M_streambuf_state |= __state; + if (this->exceptions() & __state) + throw; + } + + + + + + + + bool + good() const + { return this->rdstate() == 0; } + + + + + + + + bool + eof() const + { return (this->rdstate() & eofbit) != 0; } +# 200 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + bool + fail() const + { return (this->rdstate() & (badbit | failbit)) != 0; } + + + + + + + + bool + bad() const + { return (this->rdstate() & badbit) != 0; } +# 221 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + iostate + exceptions() const + { return _M_exception; } +# 256 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + void + exceptions(iostate __except) + { + _M_exception = __except; + this->clear(_M_streambuf_state); + } + + + + + + + + explicit + basic_ios(basic_streambuf<_CharT, _Traits>* __sb) + : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), + _M_ctype(0), _M_num_put(0), _M_num_get(0) + { this->init(__sb); } + + + + + + + + virtual + ~basic_ios() { } +# 294 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + basic_ostream<_CharT, _Traits>* + tie() const + { return _M_tie; } +# 306 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + basic_ostream<_CharT, _Traits>* + tie(basic_ostream<_CharT, _Traits>* __tiestr) + { + basic_ostream<_CharT, _Traits>* __old = _M_tie; + _M_tie = __tiestr; + return __old; + } + + + + + + + + basic_streambuf<_CharT, _Traits>* + rdbuf() const + { return _M_streambuf; } +# 346 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + basic_streambuf<_CharT, _Traits>* + rdbuf(basic_streambuf<_CharT, _Traits>* __sb); +# 360 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + basic_ios& + copyfmt(const basic_ios& __rhs); + + + + + + + + char_type + fill() const + { + if (!_M_fill_init) + { + _M_fill = this->widen(' '); + _M_fill_init = true; + } + return _M_fill; + } +# 389 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + char_type + fill(char_type __ch) + { + char_type __old = this->fill(); + _M_fill = __ch; + return __old; + } +# 409 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + locale + imbue(const locale& __loc); +# 429 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + char + narrow(char_type __c, char __dfault) const + { return __check_facet(_M_ctype).narrow(__c, __dfault); } +# 448 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 3 + char_type + widen(char __c) const + { return __check_facet(_M_ctype).widen(__c); } + + protected: + + + + + + + + basic_ios() + : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), + _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) + { } + + + + + + + + void + init(basic_streambuf<_CharT, _Traits>* __sb); + + + basic_ios(const basic_ios&) = delete; + basic_ios& operator=(const basic_ios&) = delete; + + void + move(basic_ios& __rhs) + { + ios_base::_M_move(__rhs); + _M_cache_locale(_M_ios_locale); + this->tie(__rhs.tie(nullptr)); + _M_fill = __rhs._M_fill; + _M_fill_init = __rhs._M_fill_init; + _M_streambuf = nullptr; + } + + void + move(basic_ios&& __rhs) + { this->move(__rhs); } + + void + swap(basic_ios& __rhs) noexcept + { + ios_base::_M_swap(__rhs); + _M_cache_locale(_M_ios_locale); + __rhs._M_cache_locale(__rhs._M_ios_locale); + std::swap(_M_tie, __rhs._M_tie); + std::swap(_M_fill, __rhs._M_fill); + std::swap(_M_fill_init, __rhs._M_fill_init); + } + + void + set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) + { _M_streambuf = __sb; } + + + void + _M_cache_locale(const locale& __loc); + }; + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.tcc" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.tcc" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.tcc" 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + void + basic_ios<_CharT, _Traits>::clear(iostate __state) + { + if (this->rdbuf()) + _M_streambuf_state = __state; + else + _M_streambuf_state = __state | badbit; + if (this->exceptions() & this->rdstate()) + __throw_ios_failure(("basic_ios::clear")); + } + + template<typename _CharT, typename _Traits> + basic_streambuf<_CharT, _Traits>* + basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) + { + basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; + _M_streambuf = __sb; + this->clear(); + return __old; + } + + template<typename _CharT, typename _Traits> + basic_ios<_CharT, _Traits>& + basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) + { + + + if (this != &__rhs) + { + + + + + _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? + _M_local_word : new _Words[__rhs._M_word_size]; + + + _Callback_list* __cb = __rhs._M_callbacks; + if (__cb) + __cb->_M_add_reference(); + _M_call_callbacks(erase_event); + if (_M_word != _M_local_word) + { + delete [] _M_word; + _M_word = 0; + } + _M_dispose_callbacks(); + + + _M_callbacks = __cb; + for (int __i = 0; __i < __rhs._M_word_size; ++__i) + __words[__i] = __rhs._M_word[__i]; + _M_word = __words; + _M_word_size = __rhs._M_word_size; + + this->flags(__rhs.flags()); + this->width(__rhs.width()); + this->precision(__rhs.precision()); + this->tie(__rhs.tie()); + this->fill(__rhs.fill()); + _M_ios_locale = __rhs.getloc(); + _M_cache_locale(_M_ios_locale); + + _M_call_callbacks(copyfmt_event); + + + this->exceptions(__rhs.exceptions()); + } + return *this; + } + + + template<typename _CharT, typename _Traits> + locale + basic_ios<_CharT, _Traits>::imbue(const locale& __loc) + { + locale __old(this->getloc()); + ios_base::imbue(__loc); + _M_cache_locale(__loc); + if (this->rdbuf() != 0) + this->rdbuf()->pubimbue(__loc); + return __old; + } + + template<typename _CharT, typename _Traits> + void + basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) + { + + ios_base::_M_init(); + + + _M_cache_locale(_M_ios_locale); +# 146 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.tcc" 3 + _M_fill = _CharT(); + _M_fill_init = false; + + _M_tie = 0; + _M_exception = goodbit; + _M_streambuf = __sb; + _M_streambuf_state = __sb ? goodbit : badbit; + } + + template<typename _CharT, typename _Traits> + void + basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) + { + if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) + _M_ctype = &use_facet<__ctype_type>(__loc); + else + _M_ctype = 0; + + if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) + _M_num_put = &use_facet<__num_put_type>(__loc); + else + _M_num_put = 0; + + if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) + _M_num_get = &use_facet<__num_get_type>(__loc); + else + _M_num_get = 0; + } + + + + + extern template class basic_ios<char>; + + + extern template class basic_ios<wchar_t>; + + + + +} +# 517 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/basic_ios.h" 2 3 +# 45 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ios" 2 3 +# 39 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 2 3 + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 57 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits> + class basic_ostream : virtual public basic_ios<_CharT, _Traits> + { + public: + + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + typedef basic_streambuf<_CharT, _Traits> __streambuf_type; + typedef basic_ios<_CharT, _Traits> __ios_type; + typedef basic_ostream<_CharT, _Traits> __ostream_type; + typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > + __num_put_type; + typedef ctype<_CharT> __ctype_type; +# 83 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + explicit + basic_ostream(__streambuf_type* __sb) + { this->init(__sb); } + + + + + + + virtual + ~basic_ostream() { } + + + class sentry; + friend class sentry; +# 107 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + operator<<(__ostream_type& (*__pf)(__ostream_type&)) + { + + + + return __pf(*this); + } + + __ostream_type& + operator<<(__ios_type& (*__pf)(__ios_type&)) + { + + + + __pf(*this); + return *this; + } + + __ostream_type& + operator<<(ios_base& (*__pf) (ios_base&)) + { + + + + __pf(*this); + return *this; + } +# 165 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + operator<<(long __n) + { return _M_insert(__n); } + + __ostream_type& + operator<<(unsigned long __n) + { return _M_insert(__n); } + + __ostream_type& + operator<<(bool __n) + { return _M_insert(__n); } + + __ostream_type& + operator<<(short __n); + + __ostream_type& + operator<<(unsigned short __n) + { + + + return _M_insert(static_cast<unsigned long>(__n)); + } + + __ostream_type& + operator<<(int __n); + + __ostream_type& + operator<<(unsigned int __n) + { + + + return _M_insert(static_cast<unsigned long>(__n)); + } + + + __ostream_type& + operator<<(long long __n) + { return _M_insert(__n); } + + __ostream_type& + operator<<(unsigned long long __n) + { return _M_insert(__n); } +# 219 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + operator<<(double __f) + { return _M_insert(__f); } + + __ostream_type& + operator<<(float __f) + { + + + return _M_insert(static_cast<double>(__f)); + } + + __ostream_type& + operator<<(long double __f) + { return _M_insert(__f); } +# 244 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + operator<<(const void* __p) + { return _M_insert(__p); } +# 269 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + operator<<(__streambuf_type* __sb); +# 302 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + put(char_type __c); + + + + + + + void + _M_write(const char_type* __s, streamsize __n) + { + const streamsize __put = this->rdbuf()->sputn(__s, __n); + if (__put != __n) + this->setstate(ios_base::badbit); + } +# 334 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + write(const char_type* __s, streamsize __n); +# 347 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + flush(); +# 357 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + pos_type + tellp(); +# 368 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + seekp(pos_type); +# 380 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + __ostream_type& + seekp(off_type, ios_base::seekdir); + + protected: + basic_ostream() + { this->init(0); } + + + + basic_ostream(basic_iostream<_CharT, _Traits>&) { } + + basic_ostream(const basic_ostream&) = delete; + + basic_ostream(basic_ostream&& __rhs) + : __ios_type() + { __ios_type::move(__rhs); } + + + + basic_ostream& operator=(const basic_ostream&) = delete; + + basic_ostream& + operator=(basic_ostream&& __rhs) + { + swap(__rhs); + return *this; + } + + void + swap(basic_ostream& __rhs) + { __ios_type::swap(__rhs); } + + + template<typename _ValueT> + __ostream_type& + _M_insert(_ValueT __v); + }; +# 425 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template <typename _CharT, typename _Traits> + class basic_ostream<_CharT, _Traits>::sentry + { + + bool _M_ok; + basic_ostream<_CharT, _Traits>& _M_os; + + public: +# 444 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + explicit + sentry(basic_ostream<_CharT, _Traits>& __os); +# 454 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + ~sentry() + { + + if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) + { + + if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) + _M_os.setstate(ios_base::badbit); + } + } +# 473 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + explicit + + operator bool() const + { return _M_ok; } + }; +# 495 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) + { return __ostream_insert(__out, &__c, 1); } + + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) + { return (__out << __out.widen(__c)); } + + + template <class _Traits> + inline basic_ostream<char, _Traits>& + operator<<(basic_ostream<char, _Traits>& __out, char __c) + { return __ostream_insert(__out, &__c, 1); } + + + template<class _Traits> + inline basic_ostream<char, _Traits>& + operator<<(basic_ostream<char, _Traits>& __out, signed char __c) + { return (__out << static_cast<char>(__c)); } + + template<class _Traits> + inline basic_ostream<char, _Traits>& + operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c) + { return (__out << static_cast<char>(__c)); } +# 537 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) + { + if (!__s) + __out.setstate(ios_base::badbit); + else + __ostream_insert(__out, __s, + static_cast<streamsize>(_Traits::length(__s))); + return __out; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits> & + operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); + + + template<class _Traits> + inline basic_ostream<char, _Traits>& + operator<<(basic_ostream<char, _Traits>& __out, const char* __s) + { + if (!__s) + __out.setstate(ios_base::badbit); + else + __ostream_insert(__out, __s, + static_cast<streamsize>(_Traits::length(__s))); + return __out; + } + + + template<class _Traits> + inline basic_ostream<char, _Traits>& + operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s) + { return (__out << reinterpret_cast<const char*>(__s)); } + + template<class _Traits> + inline basic_ostream<char, _Traits> & + operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s) + { return (__out << reinterpret_cast<const char*>(__s)); } +# 588 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + endl(basic_ostream<_CharT, _Traits>& __os) + { return flush(__os.put(__os.widen('\n'))); } +# 600 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + ends(basic_ostream<_CharT, _Traits>& __os) + { return __os.put(_CharT()); } + + + + + + + template<typename _CharT, typename _Traits> + inline basic_ostream<_CharT, _Traits>& + flush(basic_ostream<_CharT, _Traits>& __os) + { return __os.flush(); } +# 626 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 3 + template<typename _CharT, typename _Traits, typename _Tp> + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x) + { + __os << __x; + return __os; + } + + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream.tcc" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream.tcc" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/ostream.tcc" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>::sentry:: + sentry(basic_ostream<_CharT, _Traits>& __os) + : _M_ok(false), _M_os(__os) + { + + if (__os.tie() && __os.good()) + __os.tie()->flush(); + + if (__os.good()) + _M_ok = true; + else + __os.setstate(ios_base::failbit); + } + + template<typename _CharT, typename _Traits> + template<typename _ValueT> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + _M_insert(_ValueT __v) + { + sentry __cerb(*this); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const __num_put_type& __np = __check_facet(this->_M_num_put); + if (__np.put(*this, *this, this->fill(), __v).failed()) + __err |= ios_base::badbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + operator<<(short __n) + { + + + const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; + if (__fmt == ios_base::oct || __fmt == ios_base::hex) + return _M_insert(static_cast<long>(static_cast<unsigned short>(__n))); + else + return _M_insert(static_cast<long>(__n)); + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + operator<<(int __n) + { + + + const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; + if (__fmt == ios_base::oct || __fmt == ios_base::hex) + return _M_insert(static_cast<long>(static_cast<unsigned int>(__n))); + else + return _M_insert(static_cast<long>(__n)); + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + operator<<(__streambuf_type* __sbin) + { + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this); + if (__cerb && __sbin) + { + try + { + if (!__copy_streambufs(__sbin, this->rdbuf())) + __err |= ios_base::failbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::failbit); } + } + else if (!__sbin) + __err |= ios_base::badbit; + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + put(char_type __c) + { + + + + + + + sentry __cerb(*this); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __put = this->rdbuf()->sputc(__c); + if (traits_type::eq_int_type(__put, traits_type::eof())) + __err |= ios_base::badbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + write(const _CharT* __s, streamsize __n) + { + + + + + + + + sentry __cerb(*this); + if (__cerb) + { + try + { _M_write(__s, __n); } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + flush() + { + + + + ios_base::iostate __err = ios_base::goodbit; + try + { + if (this->rdbuf() && this->rdbuf()->pubsync() == -1) + __err |= ios_base::badbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + typename basic_ostream<_CharT, _Traits>::pos_type + basic_ostream<_CharT, _Traits>:: + tellp() + { + pos_type __ret = pos_type(-1); + try + { + if (!this->fail()) + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + return __ret; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + seekp(pos_type __pos) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + if (!this->fail()) + { + + + const pos_type __p = this->rdbuf()->pubseekpos(__pos, + ios_base::out); + + + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + seekp(off_type __off, ios_base::seekdir __dir) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + if (!this->fail()) + { + + + const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, + ios_base::out); + + + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) + { + if (!__s) + __out.setstate(ios_base::badbit); + else + { + + + const size_t __clen = char_traits<char>::length(__s); + try + { + struct __ptr_guard + { + _CharT *__p; + __ptr_guard (_CharT *__ip): __p(__ip) { } + ~__ptr_guard() { delete[] __p; } + _CharT* __get() { return __p; } + } __pg (new _CharT[__clen]); + + _CharT *__ws = __pg.__get(); + for (size_t __i = 0; __i < __clen; ++__i) + __ws[__i] = __out.widen(__s[__i]); + __ostream_insert(__out, __ws, __clen); + } + catch(__cxxabiv1::__forced_unwind&) + { + __out._M_setstate(ios_base::badbit); + throw; + } + catch(...) + { __out._M_setstate(ios_base::badbit); } + } + return __out; + } + + + + + extern template class basic_ostream<char>; + extern template ostream& endl(ostream&); + extern template ostream& ends(ostream&); + extern template ostream& flush(ostream&); + extern template ostream& operator<<(ostream&, char); + extern template ostream& operator<<(ostream&, unsigned char); + extern template ostream& operator<<(ostream&, signed char); + extern template ostream& operator<<(ostream&, const char*); + extern template ostream& operator<<(ostream&, const unsigned char*); + extern template ostream& operator<<(ostream&, const signed char*); + + extern template ostream& ostream::_M_insert(long); + extern template ostream& ostream::_M_insert(unsigned long); + extern template ostream& ostream::_M_insert(bool); + + extern template ostream& ostream::_M_insert(long long); + extern template ostream& ostream::_M_insert(unsigned long long); + + extern template ostream& ostream::_M_insert(double); + extern template ostream& ostream::_M_insert(long double); + extern template ostream& ostream::_M_insert(const void*); + + + extern template class basic_ostream<wchar_t>; + extern template wostream& endl(wostream&); + extern template wostream& ends(wostream&); + extern template wostream& flush(wostream&); + extern template wostream& operator<<(wostream&, wchar_t); + extern template wostream& operator<<(wostream&, char); + extern template wostream& operator<<(wostream&, const wchar_t*); + extern template wostream& operator<<(wostream&, const char*); + + extern template wostream& wostream::_M_insert(long); + extern template wostream& wostream::_M_insert(unsigned long); + extern template wostream& wostream::_M_insert(bool); + + extern template wostream& wostream::_M_insert(long long); + extern template wostream& wostream::_M_insert(unsigned long long); + + extern template wostream& wostream::_M_insert(double); + extern template wostream& wostream::_M_insert(long double); + extern template wostream& wostream::_M_insert(const void*); + + + + +} +# 639 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ostream" 2 3 +# 65 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 1 3 +# 36 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 57 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + class basic_istream : virtual public basic_ios<_CharT, _Traits> + { + public: + + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + typedef basic_streambuf<_CharT, _Traits> __streambuf_type; + typedef basic_ios<_CharT, _Traits> __ios_type; + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > + __num_get_type; + typedef ctype<_CharT> __ctype_type; + + protected: + + + + + + streamsize _M_gcount; + + public: + + + + + + + + explicit + basic_istream(__streambuf_type* __sb) + : _M_gcount(streamsize(0)) + { this->init(__sb); } + + + + + + + virtual + ~basic_istream() + { _M_gcount = streamsize(0); } + + + class sentry; + friend class sentry; +# 119 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + operator>>(__istream_type& (*__pf)(__istream_type&)) + { return __pf(*this); } + + __istream_type& + operator>>(__ios_type& (*__pf)(__ios_type&)) + { + __pf(*this); + return *this; + } + + __istream_type& + operator>>(ios_base& (*__pf)(ios_base&)) + { + __pf(*this); + return *this; + } +# 167 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + operator>>(bool& __n) + { return _M_extract(__n); } + + __istream_type& + operator>>(short& __n); + + __istream_type& + operator>>(unsigned short& __n) + { return _M_extract(__n); } + + __istream_type& + operator>>(int& __n); + + __istream_type& + operator>>(unsigned int& __n) + { return _M_extract(__n); } + + __istream_type& + operator>>(long& __n) + { return _M_extract(__n); } + + __istream_type& + operator>>(unsigned long& __n) + { return _M_extract(__n); } + + + __istream_type& + operator>>(long long& __n) + { return _M_extract(__n); } + + __istream_type& + operator>>(unsigned long long& __n) + { return _M_extract(__n); } +# 213 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + operator>>(float& __f) + { return _M_extract(__f); } + + __istream_type& + operator>>(double& __f) + { return _M_extract(__f); } + + __istream_type& + operator>>(long double& __f) + { return _M_extract(__f); } +# 234 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + operator>>(void*& __p) + { return _M_extract(__p); } +# 258 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + operator>>(__streambuf_type* __sb); +# 268 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + streamsize + gcount() const + { return _M_gcount; } +# 301 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + int_type + get(); +# 315 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + get(char_type& __c); +# 342 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + get(char_type* __s, streamsize __n, char_type __delim); +# 353 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + get(char_type* __s, streamsize __n) + { return this->get(__s, __n, this->widen('\n')); } +# 376 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + get(__streambuf_type& __sb, char_type __delim); +# 386 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + get(__streambuf_type& __sb) + { return this->get(__sb, this->widen('\n')); } +# 415 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + getline(char_type* __s, streamsize __n, char_type __delim); +# 426 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + getline(char_type* __s, streamsize __n) + { return this->getline(__s, __n, this->widen('\n')); } +# 450 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + ignore(streamsize __n, int_type __delim); + + __istream_type& + ignore(streamsize __n); + + __istream_type& + ignore(); +# 467 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + int_type + peek(); +# 485 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + read(char_type* __s, streamsize __n); +# 504 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + streamsize + readsome(char_type* __s, streamsize __n); +# 521 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + putback(char_type __c); +# 537 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + unget(); +# 555 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + int + sync(); +# 570 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + pos_type + tellg(); +# 585 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + seekg(pos_type); +# 601 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + __istream_type& + seekg(off_type, ios_base::seekdir); + + + protected: + basic_istream() + : _M_gcount(streamsize(0)) + { this->init(0); } + + + basic_istream(const basic_istream&) = delete; + + basic_istream(basic_istream&& __rhs) + : __ios_type(), _M_gcount(__rhs._M_gcount) + { + __ios_type::move(__rhs); + __rhs._M_gcount = 0; + } + + + + basic_istream& operator=(const basic_istream&) = delete; + + basic_istream& + operator=(basic_istream&& __rhs) + { + swap(__rhs); + return *this; + } + + void + swap(basic_istream& __rhs) + { + __ios_type::swap(__rhs); + std::swap(_M_gcount, __rhs._M_gcount); + } + + + template<typename _ValueT> + __istream_type& + _M_extract(_ValueT& __v); + }; + + + template<> + basic_istream<char>& + basic_istream<char>:: + getline(char_type* __s, streamsize __n, char_type __delim); + + template<> + basic_istream<char>& + basic_istream<char>:: + ignore(streamsize __n); + + template<> + basic_istream<char>& + basic_istream<char>:: + ignore(streamsize __n, int_type __delim); + + + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + getline(char_type* __s, streamsize __n, char_type __delim); + + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + ignore(streamsize __n); + + template<> + basic_istream<wchar_t>& + basic_istream<wchar_t>:: + ignore(streamsize __n, int_type __delim); +# 685 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + class basic_istream<_CharT, _Traits>::sentry + { + + bool _M_ok; + + public: + + typedef _Traits traits_type; + typedef basic_streambuf<_CharT, _Traits> __streambuf_type; + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::__ctype_type __ctype_type; + typedef typename _Traits::int_type __int_type; +# 721 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + explicit + sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); +# 732 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + explicit + + operator bool() const + { return _M_ok; } + }; +# 750 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); + + template<class _Traits> + inline basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) + { return (__in >> reinterpret_cast<char&>(__c)); } + + template<class _Traits> + inline basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, signed char& __c) + { return (__in >> reinterpret_cast<char&>(__c)); } +# 792 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); + + + template<> + basic_istream<char>& + operator>>(basic_istream<char>& __in, char* __s); + + template<class _Traits> + inline basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) + { return (__in >> reinterpret_cast<char*>(__s)); } + + template<class _Traits> + inline basic_istream<char, _Traits>& + operator>>(basic_istream<char, _Traits>& __in, signed char* __s) + { return (__in >> reinterpret_cast<char*>(__s)); } +# 823 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + class basic_iostream + : public basic_istream<_CharT, _Traits>, + public basic_ostream<_CharT, _Traits> + { + public: + + + + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef basic_ostream<_CharT, _Traits> __ostream_type; + + + + + + + + explicit + basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) + : __istream_type(__sb), __ostream_type(__sb) { } + + + + + virtual + ~basic_iostream() { } + + protected: + basic_iostream() + : __istream_type(), __ostream_type() { } + + + basic_iostream(const basic_iostream&) = delete; + + basic_iostream(basic_iostream&& __rhs) + : __istream_type(std::move(__rhs)), __ostream_type(*this) + { } + + + + basic_iostream& operator=(const basic_iostream&) = delete; + + basic_iostream& + operator=(basic_iostream&& __rhs) + { + swap(__rhs); + return *this; + } + + void + swap(basic_iostream& __rhs) + { __istream_type::swap(__rhs); } + + }; +# 906 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + ws(basic_istream<_CharT, _Traits>& __is); +# 922 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 3 + template<typename _CharT, typename _Traits, typename _Tp> + inline basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) + { + __is >> __x; + return __is; + } + + + +} + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/istream.tcc" 1 3 +# 37 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/istream.tcc" 3 + +# 38 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/istream.tcc" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>::sentry:: + sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) + { + ios_base::iostate __err = ios_base::goodbit; + if (__in.good()) + { + if (__in.tie()) + __in.tie()->flush(); + if (!__noskip && bool(__in.flags() & ios_base::skipws)) + { + const __int_type __eof = traits_type::eof(); + __streambuf_type* __sb = __in.rdbuf(); + __int_type __c = __sb->sgetc(); + + const __ctype_type& __ct = __check_facet(__in._M_ctype); + while (!traits_type::eq_int_type(__c, __eof) + && __ct.is(ctype_base::space, + traits_type::to_char_type(__c))) + __c = __sb->snextc(); + + + + + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + } + + if (__in.good() && __err == ios_base::goodbit) + _M_ok = true; + else + { + __err |= ios_base::failbit; + __in.setstate(__err); + } + } + + template<typename _CharT, typename _Traits> + template<typename _ValueT> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + _M_extract(_ValueT& __v) + { + sentry __cerb(*this, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __v); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + operator>>(short& __n) + { + + + sentry __cerb(*this, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + long __l; + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __l); + + + + if (__l < __gnu_cxx::__numeric_traits<short>::__min) + { + __err |= ios_base::failbit; + __n = __gnu_cxx::__numeric_traits<short>::__min; + } + else if (__l > __gnu_cxx::__numeric_traits<short>::__max) + { + __err |= ios_base::failbit; + __n = __gnu_cxx::__numeric_traits<short>::__max; + } + else + __n = short(__l); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + operator>>(int& __n) + { + + + sentry __cerb(*this, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + long __l; + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __l); + + + + if (__l < __gnu_cxx::__numeric_traits<int>::__min) + { + __err |= ios_base::failbit; + __n = __gnu_cxx::__numeric_traits<int>::__min; + } + else if (__l > __gnu_cxx::__numeric_traits<int>::__max) + { + __err |= ios_base::failbit; + __n = __gnu_cxx::__numeric_traits<int>::__max; + } + else + __n = int(__l); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + operator>>(__streambuf_type* __sbout) + { + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, false); + if (__cerb && __sbout) + { + try + { + bool __ineof; + if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) + __err |= ios_base::failbit; + if (__ineof) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::failbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::failbit); } + } + else if (!__sbout) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + typename basic_istream<_CharT, _Traits>::int_type + basic_istream<_CharT, _Traits>:: + get(void) + { + const int_type __eof = traits_type::eof(); + int_type __c = __eof; + _M_gcount = 0; + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, true); + if (__cerb) + { + try + { + __c = this->rdbuf()->sbumpc(); + + if (!traits_type::eq_int_type(__c, __eof)) + _M_gcount = 1; + else + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return __c; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + get(char_type& __c) + { + _M_gcount = 0; + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, true); + if (__cerb) + { + try + { + const int_type __cb = this->rdbuf()->sbumpc(); + + if (!traits_type::eq_int_type(__cb, traits_type::eof())) + { + _M_gcount = 1; + __c = traits_type::to_char_type(__cb); + } + else + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + get(char_type* __s, streamsize __n, char_type __delim) + { + _M_gcount = 0; + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, true); + if (__cerb) + { + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + while (_M_gcount + 1 < __n + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim)) + { + *__s++ = traits_type::to_char_type(__c); + ++_M_gcount; + __c = __sb->snextc(); + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + + + if (__n > 0) + *__s = char_type(); + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + get(__streambuf_type& __sb, char_type __delim) + { + _M_gcount = 0; + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, true); + if (__cerb) + { + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __this_sb = this->rdbuf(); + int_type __c = __this_sb->sgetc(); + char_type __c2 = traits_type::to_char_type(__c); + + while (!traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim) + && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) + { + ++_M_gcount; + __c = __this_sb->snextc(); + __c2 = traits_type::to_char_type(__c); + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + getline(char_type* __s, streamsize __n, char_type __delim) + { + _M_gcount = 0; + ios_base::iostate __err = ios_base::goodbit; + sentry __cerb(*this, true); + if (__cerb) + { + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + while (_M_gcount + 1 < __n + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim)) + { + *__s++ = traits_type::to_char_type(__c); + __c = __sb->snextc(); + ++_M_gcount; + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + else + { + if (traits_type::eq_int_type(__c, __idelim)) + { + __sb->sbumpc(); + ++_M_gcount; + } + else + __err |= ios_base::failbit; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + + + if (__n > 0) + *__s = char_type(); + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + + + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + ignore(void) + { + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + + if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) + __err |= ios_base::eofbit; + else + _M_gcount = 1; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + ignore(streamsize __n) + { + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb && __n > 0) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); +# 513 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/istream.tcc" 3 + bool __large_ignore = false; + while (true) + { + while (_M_gcount < __n + && !traits_type::eq_int_type(__c, __eof)) + { + ++_M_gcount; + __c = __sb->snextc(); + } + if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max + && !traits_type::eq_int_type(__c, __eof)) + { + _M_gcount = + __gnu_cxx::__numeric_traits<streamsize>::__min; + __large_ignore = true; + } + else + break; + } + + if (__large_ignore) + _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; + + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + ignore(streamsize __n, int_type __delim) + { + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb && __n > 0) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + + bool __large_ignore = false; + while (true) + { + while (_M_gcount < __n + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __delim)) + { + ++_M_gcount; + __c = __sb->snextc(); + } + if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __delim)) + { + _M_gcount = + __gnu_cxx::__numeric_traits<streamsize>::__min; + __large_ignore = true; + } + else + break; + } + + if (__large_ignore) + _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; + + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + else if (traits_type::eq_int_type(__c, __delim)) + { + if (_M_gcount + < __gnu_cxx::__numeric_traits<streamsize>::__max) + ++_M_gcount; + __sb->sbumpc(); + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + typename basic_istream<_CharT, _Traits>::int_type + basic_istream<_CharT, _Traits>:: + peek(void) + { + int_type __c = traits_type::eof(); + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + __c = this->rdbuf()->sgetc(); + if (traits_type::eq_int_type(__c, traits_type::eof())) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return __c; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + read(char_type* __s, streamsize __n) + { + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + _M_gcount = this->rdbuf()->sgetn(__s, __n); + if (_M_gcount != __n) + __err |= (ios_base::eofbit | ios_base::failbit); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + streamsize + basic_istream<_CharT, _Traits>:: + readsome(char_type* __s, streamsize __n) + { + _M_gcount = 0; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + + const streamsize __num = this->rdbuf()->in_avail(); + if (__num > 0) + _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); + else if (__num == -1) + __err |= ios_base::eofbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return _M_gcount; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + putback(char_type __c) + { + + + _M_gcount = 0; + + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb + || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) + __err |= ios_base::badbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + unget(void) + { + + + _M_gcount = 0; + + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb + || traits_type::eq_int_type(__sb->sungetc(), __eof)) + __err |= ios_base::badbit; + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + int + basic_istream<_CharT, _Traits>:: + sync(void) + { + + + int __ret = -1; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + __streambuf_type* __sb = this->rdbuf(); + if (__sb) + { + if (__sb->pubsync() == -1) + __err |= ios_base::badbit; + else + __ret = 0; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return __ret; + } + + template<typename _CharT, typename _Traits> + typename basic_istream<_CharT, _Traits>::pos_type + basic_istream<_CharT, _Traits>:: + tellg(void) + { + + + pos_type __ret = pos_type(-1); + sentry __cerb(*this, true); + if (__cerb) + { + try + { + if (!this->fail()) + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, + ios_base::in); + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + } + return __ret; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + seekg(pos_type __pos) + { + + + + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + if (!this->fail()) + { + + const pos_type __p = this->rdbuf()->pubseekpos(__pos, + ios_base::in); + + + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + seekg(off_type __off, ios_base::seekdir __dir) + { + + + + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + if (!this->fail()) + { + + const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, + ios_base::in); + + + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + throw; + } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) + { + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::int_type __int_type; + + typename __istream_type::sentry __cerb(__in, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + try + { + const __int_type __cb = __in.rdbuf()->sbumpc(); + if (!_Traits::eq_int_type(__cb, _Traits::eof())) + __c = _Traits::to_char_type(__cb); + else + __err |= (ios_base::eofbit | ios_base::failbit); + } + catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(ios_base::badbit); + throw; + } + catch(...) + { __in._M_setstate(ios_base::badbit); } + if (__err) + __in.setstate(__err); + } + return __in; + } + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) + { + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef basic_streambuf<_CharT, _Traits> __streambuf_type; + typedef typename _Traits::int_type int_type; + typedef _CharT char_type; + typedef ctype<_CharT> __ctype_type; + + streamsize __extracted = 0; + ios_base::iostate __err = ios_base::goodbit; + typename __istream_type::sentry __cerb(__in, false); + if (__cerb) + { + try + { + + streamsize __num = __in.width(); + if (__num <= 0) + __num = __gnu_cxx::__numeric_traits<streamsize>::__max; + + const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); + + const int_type __eof = _Traits::eof(); + __streambuf_type* __sb = __in.rdbuf(); + int_type __c = __sb->sgetc(); + + while (__extracted < __num - 1 + && !_Traits::eq_int_type(__c, __eof) + && !__ct.is(ctype_base::space, + _Traits::to_char_type(__c))) + { + *__s++ = _Traits::to_char_type(__c); + ++__extracted; + __c = __sb->snextc(); + } + if (_Traits::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + + + + *__s = char_type(); + __in.width(0); + } + catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(ios_base::badbit); + throw; + } + catch(...) + { __in._M_setstate(ios_base::badbit); } + } + if (!__extracted) + __err |= ios_base::failbit; + if (__err) + __in.setstate(__err); + return __in; + } + + + template<typename _CharT, typename _Traits> + basic_istream<_CharT, _Traits>& + ws(basic_istream<_CharT, _Traits>& __in) + { + typedef basic_istream<_CharT, _Traits> __istream_type; + typedef basic_streambuf<_CharT, _Traits> __streambuf_type; + typedef typename __istream_type::int_type __int_type; + typedef ctype<_CharT> __ctype_type; + + const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); + const __int_type __eof = _Traits::eof(); + __streambuf_type* __sb = __in.rdbuf(); + __int_type __c = __sb->sgetc(); + + while (!_Traits::eq_int_type(__c, __eof) + && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) + __c = __sb->snextc(); + + if (_Traits::eq_int_type(__c, __eof)) + __in.setstate(ios_base::eofbit); + return __in; + } + + + + + extern template class basic_istream<char>; + extern template istream& ws(istream&); + extern template istream& operator>>(istream&, char&); + extern template istream& operator>>(istream&, char*); + extern template istream& operator>>(istream&, unsigned char&); + extern template istream& operator>>(istream&, signed char&); + extern template istream& operator>>(istream&, unsigned char*); + extern template istream& operator>>(istream&, signed char*); + + extern template istream& istream::_M_extract(unsigned short&); + extern template istream& istream::_M_extract(unsigned int&); + extern template istream& istream::_M_extract(long&); + extern template istream& istream::_M_extract(unsigned long&); + extern template istream& istream::_M_extract(bool&); + + extern template istream& istream::_M_extract(long long&); + extern template istream& istream::_M_extract(unsigned long long&); + + extern template istream& istream::_M_extract(float&); + extern template istream& istream::_M_extract(double&); + extern template istream& istream::_M_extract(long double&); + extern template istream& istream::_M_extract(void*&); + + extern template class basic_iostream<char>; + + + extern template class basic_istream<wchar_t>; + extern template wistream& ws(wistream&); + extern template wistream& operator>>(wistream&, wchar_t&); + extern template wistream& operator>>(wistream&, wchar_t*); + + extern template wistream& wistream::_M_extract(unsigned short&); + extern template wistream& wistream::_M_extract(unsigned int&); + extern template wistream& wistream::_M_extract(long&); + extern template wistream& wistream::_M_extract(unsigned long&); + extern template wistream& wistream::_M_extract(bool&); + + extern template wistream& wistream::_M_extract(long long&); + extern template wistream& wistream::_M_extract(unsigned long long&); + + extern template wistream& wistream::_M_extract(float&); + extern template wistream& wistream::_M_extract(double&); + extern template wistream& wistream::_M_extract(long double&); + extern template wistream& wistream::_M_extract(void*&); + + extern template class basic_iostream<wchar_t>; + + + + +} +# 935 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/istream" 2 3 +# 66 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stream_iterator.h" 1 3 +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stream_iterator.h" 3 + +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stream_iterator.h" 3 + + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + + template<typename _Tp, typename _CharT = char, + typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t> + class istream_iterator + : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&> + { + public: + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_istream<_CharT, _Traits> istream_type; + + private: + istream_type* _M_stream; + _Tp _M_value; + bool _M_ok; + + public: + + constexpr istream_iterator() + : _M_stream(0), _M_value(), _M_ok(false) {} + + + istream_iterator(istream_type& __s) + : _M_stream(&__s) + { _M_read(); } + + istream_iterator(const istream_iterator& __obj) + : _M_stream(__obj._M_stream), _M_value(__obj._M_value), + _M_ok(__obj._M_ok) + { } + + const _Tp& + operator*() const + { + + + ; + return _M_value; + } + + const _Tp* + operator->() const { return &(operator*()); } + + istream_iterator& + operator++() + { + + + ; + _M_read(); + return *this; + } + + istream_iterator + operator++(int) + { + + + ; + istream_iterator __tmp = *this; + _M_read(); + return __tmp; + } + + bool + _M_equal(const istream_iterator& __x) const + { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); } + + private: + void + _M_read() + { + _M_ok = (_M_stream && *_M_stream) ? true : false; + if (_M_ok) + { + *_M_stream >> _M_value; + _M_ok = *_M_stream ? true : false; + } + } + }; + + + template<typename _Tp, typename _CharT, typename _Traits, typename _Dist> + inline bool + operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) + { return __x._M_equal(__y); } + + + template <class _Tp, class _CharT, class _Traits, class _Dist> + inline bool + operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) + { return !__x._M_equal(__y); } +# 152 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stream_iterator.h" 3 + template<typename _Tp, typename _CharT = char, + typename _Traits = char_traits<_CharT> > + class ostream_iterator + : public iterator<output_iterator_tag, void, void, void, void> + { + public: + + + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + + + private: + ostream_type* _M_stream; + const _CharT* _M_string; + + public: + + ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {} +# 183 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stream_iterator.h" 3 + ostream_iterator(ostream_type& __s, const _CharT* __c) + : _M_stream(&__s), _M_string(__c) { } + + + ostream_iterator(const ostream_iterator& __obj) + : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } + + + + ostream_iterator& + operator=(const _Tp& __value) + { + + + ; + *_M_stream << __value; + if (_M_string) *_M_stream << _M_string; + return *this; + } + + ostream_iterator& + operator*() + { return *this; } + + ostream_iterator& + operator++() + { return *this; } + + ostream_iterator& + operator++(int) + { return *this; } + }; + + + + +} +# 67 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/iterator" 2 3 +# 54 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 +# 66 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" + + + + + + + + +# 73 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" +__attribute__((visibility("default"))) char *qstrdup(const char *); + +inline uint qstrlen(const char *str) +{ return str ? uint(strlen(str)) : 0; } + +inline uint qstrnlen(const char *str, uint maxlen) +{ + uint length = 0; + if (str) { + while (length < maxlen && *str++) + length++; + } + return length; +} + +__attribute__((visibility("default"))) char *qstrcpy(char *dst, const char *src); +__attribute__((visibility("default"))) char *qstrncpy(char *dst, const char *src, uint len); + +__attribute__((visibility("default"))) int qstrcmp(const char *str1, const char *str2); +__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const QByteArray &str2); +__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const char *str2); +static inline int qstrcmp(const char *str1, const QByteArray &str2) +{ return -qstrcmp(str2, str1); } + +inline int qstrncmp(const char *str1, const char *str2, uint len) +{ + return (str1 && str2) ? strncmp(str1, str2, len) + : (str1 ? 1 : (str2 ? -1 : 0)); +} +__attribute__((visibility("default"))) int qstricmp(const char *, const char *); +__attribute__((visibility("default"))) int qstrnicmp(const char *, const char *, uint len); + + +__attribute__((visibility("default"))) int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap); +__attribute__((visibility("default"))) int qsnprintf(char *str, size_t n, const char *fmt, ...); + + + +__attribute__((visibility("default"))) quint16 qChecksum(const char *s, uint len); + +class QByteRef; +class QString; +class QDataStream; +template <typename T> class QList; + +typedef QArrayData QByteArrayData; + +template<int N> struct QStaticByteArrayData +{ + QByteArrayData ba; + char data[N + 1]; + + QByteArrayData *data_ptr() const + { + do { } while ((false) && (ba.ref.isStatic())); + return const_cast<QByteArrayData *>(&ba); + } +}; + +struct QByteArrayDataPtr +{ + QByteArrayData *ptr; +}; +# 167 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" +class __attribute__((visibility("default"))) QByteArray +{ +private: + typedef QTypedArrayData<char> Data; + +public: + enum Base64Option { + Base64Encoding = 0, + Base64UrlEncoding = 1, + + KeepTrailingEquals = 0, + OmitTrailingEquals = 2 + }; + typedef QFlags<Base64Option> Base64Options; + + inline QByteArray() noexcept; + QByteArray(const char *, int size = -1); + QByteArray(int size, char c); + QByteArray(int size, Qt::Initialization); + inline QByteArray(const QByteArray &) noexcept; + inline ~QByteArray(); + + QByteArray &operator=(const QByteArray &) noexcept; + QByteArray &operator=(const char *str); + + inline QByteArray(QByteArray && other) noexcept : d(other.d) { other.d = Data::sharedNull(); } + inline QByteArray &operator=(QByteArray &&other) noexcept + { qSwap(d, other.d); return *this; } + + + inline void swap(QByteArray &other) noexcept + { qSwap(d, other.d); } + + inline int size() const; + bool isEmpty() const; + void resize(int size); + + QByteArray &fill(char c, int size = -1); + + int capacity() const; + void reserve(int size); + void squeeze(); + + + operator const char *() const; + operator const void *() const; + + char *data(); + const char *data() const; + inline const char *constData() const; + inline void detach(); + bool isDetached() const; + inline bool isSharedWith(const QByteArray &other) const { return d == other.d; } + void clear(); + + char at(int i) const; + char operator[](int i) const; + char operator[](uint i) const; + QByteRef operator[](int i); + QByteRef operator[](uint i); + + int indexOf(char c, int from = 0) const; + int indexOf(const char *c, int from = 0) const; + int indexOf(const QByteArray &a, int from = 0) const; + int lastIndexOf(char c, int from = -1) const; + int lastIndexOf(const char *c, int from = -1) const; + int lastIndexOf(const QByteArray &a, int from = -1) const; + + bool contains(char c) const; + bool contains(const char *a) const; + bool contains(const QByteArray &a) const; + int count(char c) const; + int count(const char *a) const; + int count(const QByteArray &a) const; + + QByteArray left(int len) const __attribute__ ((__warn_unused_result__)); + QByteArray right(int len) const __attribute__ ((__warn_unused_result__)); + QByteArray mid(int index, int len = -1) const __attribute__ ((__warn_unused_result__)); + + bool startsWith(const QByteArray &a) const; + bool startsWith(char c) const; + bool startsWith(const char *c) const; + + bool endsWith(const QByteArray &a) const; + bool endsWith(char c) const; + bool endsWith(const char *c) const; + + void truncate(int pos); + void chop(int n); + + + + + + + + + + inline __attribute__((always_inline)) QByteArray toLower() const & + { return toLower_helper(*this); } + inline __attribute__((always_inline)) QByteArray toLower() && + { return toLower_helper(*this); } + inline __attribute__((always_inline)) QByteArray toUpper() const & + { return toUpper_helper(*this); } + inline __attribute__((always_inline)) QByteArray toUpper() && + { return toUpper_helper(*this); } + inline __attribute__((always_inline)) QByteArray trimmed() const & + { return trimmed_helper(*this); } + inline __attribute__((always_inline)) QByteArray trimmed() && + { return trimmed_helper(*this); } + inline __attribute__((always_inline)) QByteArray simplified() const & + { return simplified_helper(*this); } + inline __attribute__((always_inline)) QByteArray simplified() && + { return simplified_helper(*this); } + + +# 291 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" + QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const __attribute__ ((__warn_unused_result__)); + QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const __attribute__ ((__warn_unused_result__)); + + QByteArray &prepend(char c); + QByteArray &prepend(int count, char c); + QByteArray &prepend(const char *s); + QByteArray &prepend(const char *s, int len); + QByteArray &prepend(const QByteArray &a); + QByteArray &append(char c); + QByteArray &append(int count, char c); + QByteArray &append(const char *s); + QByteArray &append(const char *s, int len); + QByteArray &append(const QByteArray &a); + QByteArray &insert(int i, char c); + QByteArray &insert(int i, int count, char c); + QByteArray &insert(int i, const char *s); + QByteArray &insert(int i, const char *s, int len); + QByteArray &insert(int i, const QByteArray &a); + QByteArray &remove(int index, int len); + QByteArray &replace(int index, int len, const char *s); + QByteArray &replace(int index, int len, const char *s, int alen); + QByteArray &replace(int index, int len, const QByteArray &s); + QByteArray &replace(char before, const char *after); + QByteArray &replace(char before, const QByteArray &after); + QByteArray &replace(const char *before, const char *after); + QByteArray &replace(const char *before, int bsize, const char *after, int asize); + QByteArray &replace(const QByteArray &before, const QByteArray &after); + QByteArray &replace(const QByteArray &before, const char *after); + QByteArray &replace(const char *before, const QByteArray &after); + QByteArray &replace(char before, char after); + QByteArray &operator+=(char c); + QByteArray &operator+=(const char *s); + QByteArray &operator+=(const QByteArray &a); + + QList<QByteArray> split(char sep) const; + + QByteArray repeated(int times) const __attribute__ ((__warn_unused_result__)); +# 341 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" + inline __attribute__ ((__deprecated__)) bool operator==(const QString &s2) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const QString &s2) const; + inline __attribute__ ((__deprecated__)) bool operator<(const QString &s2) const; + inline __attribute__ ((__deprecated__)) bool operator>(const QString &s2) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const QString &s2) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const QString &s2) const; + + + short toShort(bool *ok = nullptr, int base = 10) const; + ushort toUShort(bool *ok = nullptr, int base = 10) const; + int toInt(bool *ok = nullptr, int base = 10) const; + uint toUInt(bool *ok = nullptr, int base = 10) const; + long toLong(bool *ok = nullptr, int base = 10) const; + ulong toULong(bool *ok = nullptr, int base = 10) const; + qlonglong toLongLong(bool *ok = nullptr, int base = 10) const; + qulonglong toULongLong(bool *ok = nullptr, int base = 10) const; + float toFloat(bool *ok = nullptr) const; + double toDouble(bool *ok = nullptr) const; + QByteArray toBase64(Base64Options options) const; + QByteArray toBase64() const; + QByteArray toHex() const; + QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(), + const QByteArray &include = QByteArray(), + char percent = '%') const; + + QByteArray &setNum(short, int base = 10); + QByteArray &setNum(ushort, int base = 10); + QByteArray &setNum(int, int base = 10); + QByteArray &setNum(uint, int base = 10); + QByteArray &setNum(qlonglong, int base = 10); + QByteArray &setNum(qulonglong, int base = 10); + QByteArray &setNum(float, char f = 'g', int prec = 6); + QByteArray &setNum(double, char f = 'g', int prec = 6); + QByteArray &setRawData(const char *a, uint n); + + static QByteArray number(int, int base = 10) __attribute__ ((__warn_unused_result__)); + static QByteArray number(uint, int base = 10) __attribute__ ((__warn_unused_result__)); + static QByteArray number(qlonglong, int base = 10) __attribute__ ((__warn_unused_result__)); + static QByteArray number(qulonglong, int base = 10) __attribute__ ((__warn_unused_result__)); + static QByteArray number(double, char f = 'g', int prec = 6) __attribute__ ((__warn_unused_result__)); + static QByteArray fromRawData(const char *, int size) __attribute__ ((__warn_unused_result__)); + static QByteArray fromBase64(const QByteArray &base64, Base64Options options) __attribute__ ((__warn_unused_result__)); + static QByteArray fromBase64(const QByteArray &base64) __attribute__ ((__warn_unused_result__)); + static QByteArray fromHex(const QByteArray &hexEncoded) __attribute__ ((__warn_unused_result__)); + static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%') __attribute__ ((__warn_unused_result__)); +# 400 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" + typedef char *iterator; + typedef const char *const_iterator; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + inline iterator begin(); + inline const_iterator begin() const; + inline const_iterator cbegin() const; + inline const_iterator constBegin() const; + inline iterator end(); + inline const_iterator end() const; + inline const_iterator cend() const; + inline const_iterator constEnd() const; + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + + + typedef int size_type; + typedef qptrdiff difference_type; + typedef const char & const_reference; + typedef char & reference; + typedef char *pointer; + typedef const char *const_pointer; + typedef char value_type; + void push_back(char c); + void push_back(const char *c); + void push_back(const QByteArray &a); + void push_front(char c); + void push_front(const char *c); + void push_front(const QByteArray &a); + + static inline QByteArray fromStdString(const std::string &s); + inline std::string toStdString() const; + + inline int count() const { return d->size; } + int length() const { return d->size; } + bool isNull() const; + + inline QByteArray(QByteArrayDataPtr dd) + : d(static_cast<Data *>(dd.ptr)) + { + } + +private: + operator QNoImplicitBoolCast() const; + Data *d; + void reallocData(uint alloc, Data::AllocationOptions options); + void expand(int i); + QByteArray nulTerminated() const; + + static QByteArray toLower_helper(const QByteArray &a); + static QByteArray toLower_helper(QByteArray &a); + static QByteArray toUpper_helper(const QByteArray &a); + static QByteArray toUpper_helper(QByteArray &a); + static QByteArray trimmed_helper(const QByteArray &a); + static QByteArray trimmed_helper(QByteArray &a); + static QByteArray simplified_helper(const QByteArray &a); + static QByteArray simplified_helper(QByteArray &a); + + friend class QByteRef; + friend class QString; + friend __attribute__((visibility("default"))) QByteArray qUncompress(const uchar *data, int nbytes); +public: + typedef Data * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +constexpr inline QFlags<QByteArray::Base64Options::enum_type> operator|(QByteArray::Base64Options::enum_type f1, QByteArray::Base64Options::enum_type f2) noexcept { return QFlags<QByteArray::Base64Options::enum_type>(f1) | f2; } constexpr inline QFlags<QByteArray::Base64Options::enum_type> operator|(QByteArray::Base64Options::enum_type f1, QFlags<QByteArray::Base64Options::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QByteArray::Base64Options::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + +inline QByteArray::QByteArray() noexcept : d(Data::sharedNull()) { } +inline QByteArray::~QByteArray() { if (!d->ref.deref()) Data::deallocate(d); } +inline int QByteArray::size() const +{ return d->size; } + +inline char QByteArray::at(int i) const +{ do { } while ((false) && (uint(i) < uint(size()))); return d->data()[i]; } +inline char QByteArray::operator[](int i) const +{ do { } while ((false) && (uint(i) < uint(size()))); return d->data()[i]; } +inline char QByteArray::operator[](uint i) const +{ do { } while ((false) && (i < uint(size()))); return d->data()[i]; } + +inline bool QByteArray::isEmpty() const +{ return d->size == 0; } + +inline QByteArray::operator const char *() const +{ return d->data(); } +inline QByteArray::operator const void *() const +{ return d->data(); } + +inline char *QByteArray::data() +{ detach(); return d->data(); } +inline const char *QByteArray::data() const +{ return d->data(); } +inline const char *QByteArray::constData() const +{ return d->data(); } +inline void QByteArray::detach() +{ if (d->ref.isShared() || (d->offset != sizeof(QByteArrayData))) reallocData(uint(d->size) + 1u, d->detachFlags()); } +inline bool QByteArray::isDetached() const +{ return !d->ref.isShared(); } +inline QByteArray::QByteArray(const QByteArray &a) noexcept : d(a.d) +{ d->ref.ref(); } + +inline int QByteArray::capacity() const +{ return d->alloc ? d->alloc - 1 : 0; } + +inline void QByteArray::reserve(int asize) +{ + if (d->ref.isShared() || uint(asize) + 1u > d->alloc) { + reallocData(qMax(uint(size()), uint(asize)) + 1u, d->detachFlags() | Data::CapacityReserved); + } else { + + + d->capacityReserved = true; + } +} + +inline void QByteArray::squeeze() +{ + if (d->ref.isShared() || uint(d->size) + 1u < d->alloc) { + reallocData(uint(d->size) + 1u, d->detachFlags() & ~Data::CapacityReserved); + } else { + + + d->capacityReserved = false; + } +} + +class __attribute__((visibility("default"))) QByteRef { + QByteArray &a; + int i; + inline QByteRef(QByteArray &array, int idx) + : a(array),i(idx) {} + friend class QByteArray; +public: + inline operator char() const + { return i < a.d->size ? a.d->data()[i] : char(0); } + inline QByteRef &operator=(char c) + { if (i >= a.d->size) a.expand(i); else a.detach(); + a.d->data()[i] = c; return *this; } + inline QByteRef &operator=(const QByteRef &c) + { if (i >= a.d->size) a.expand(i); else a.detach(); + a.d->data()[i] = c.a.d->data()[c.i]; return *this; } + inline bool operator==(char c) const + { return a.d->data()[i] == c; } + inline bool operator!=(char c) const + { return a.d->data()[i] != c; } + inline bool operator>(char c) const + { return a.d->data()[i] > c; } + inline bool operator>=(char c) const + { return a.d->data()[i] >= c; } + inline bool operator<(char c) const + { return a.d->data()[i] < c; } + inline bool operator<=(char c) const + { return a.d->data()[i] <= c; } +}; + +inline QByteRef QByteArray::operator[](int i) +{ do { } while ((false) && (i >= 0)); return QByteRef(*this, i); } +inline QByteRef QByteArray::operator[](uint i) +{ return QByteRef(*this, i); } +inline QByteArray::iterator QByteArray::begin() +{ detach(); return d->data(); } +inline QByteArray::const_iterator QByteArray::begin() const +{ return d->data(); } +inline QByteArray::const_iterator QByteArray::cbegin() const +{ return d->data(); } +inline QByteArray::const_iterator QByteArray::constBegin() const +{ return d->data(); } +inline QByteArray::iterator QByteArray::end() +{ detach(); return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::end() const +{ return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::cend() const +{ return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::constEnd() const +{ return d->data() + d->size; } +inline QByteArray &QByteArray::append(int n, char ch) +{ return insert(d->size, n, ch); } +inline QByteArray &QByteArray::prepend(int n, char ch) +{ return insert(0, n, ch); } +inline QByteArray &QByteArray::operator+=(char c) +{ return append(c); } +inline QByteArray &QByteArray::operator+=(const char *s) +{ return append(s); } +inline QByteArray &QByteArray::operator+=(const QByteArray &a) +{ return append(a); } +inline void QByteArray::push_back(char c) +{ append(c); } +inline void QByteArray::push_back(const char *c) +{ append(c); } +inline void QByteArray::push_back(const QByteArray &a) +{ append(a); } +inline void QByteArray::push_front(char c) +{ prepend(c); } +inline void QByteArray::push_front(const char *c) +{ prepend(c); } +inline void QByteArray::push_front(const QByteArray &a) +{ prepend(a); } +inline bool QByteArray::contains(const QByteArray &a) const +{ return indexOf(a) != -1; } +inline bool QByteArray::contains(char c) const +{ return indexOf(c) != -1; } +inline bool operator==(const QByteArray &a1, const QByteArray &a2) +{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); } +inline bool operator==(const QByteArray &a1, const char *a2) +{ return a2 ? qstrcmp(a1,a2) == 0 : a1.isEmpty(); } +inline bool operator==(const char *a1, const QByteArray &a2) +{ return a1 ? qstrcmp(a1,a2) == 0 : a2.isEmpty(); } +inline bool operator!=(const QByteArray &a1, const QByteArray &a2) +{ return !(a1==a2); } +inline bool operator!=(const QByteArray &a1, const char *a2) +{ return a2 ? qstrcmp(a1,a2) != 0 : !a1.isEmpty(); } +inline bool operator!=(const char *a1, const QByteArray &a2) +{ return a1 ? qstrcmp(a1,a2) != 0 : !a2.isEmpty(); } +inline bool operator<(const QByteArray &a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) < 0; } + inline bool operator<(const QByteArray &a1, const char *a2) +{ return qstrcmp(a1, a2) < 0; } +inline bool operator<(const char *a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) < 0; } +inline bool operator<=(const QByteArray &a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator<=(const QByteArray &a1, const char *a2) +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator<=(const char *a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator>(const QByteArray &a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>(const QByteArray &a1, const char *a2) +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>(const char *a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>=(const QByteArray &a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) >= 0; } +inline bool operator>=(const QByteArray &a1, const char *a2) +{ return qstrcmp(a1, a2) >= 0; } +inline bool operator>=(const char *a1, const QByteArray &a2) +{ return qstrcmp(a1, a2) >= 0; } +# 655 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" +inline bool QByteArray::contains(const char *c) const +{ return indexOf(c) != -1; } +inline QByteArray &QByteArray::replace(char before, const char *c) +{ return replace(&before, 1, c, qstrlen(c)); } +inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c) +{ return replace(before.constData(), before.size(), c, qstrlen(c)); } +inline QByteArray &QByteArray::replace(const char *before, const char *after) +{ return replace(before, qstrlen(before), after, qstrlen(after)); } + +inline QByteArray &QByteArray::setNum(short n, int base) +{ return base == 10 ? setNum(qlonglong(n), base) : setNum(qulonglong(ushort(n)), base); } +inline QByteArray &QByteArray::setNum(ushort n, int base) +{ return setNum(qulonglong(n), base); } +inline QByteArray &QByteArray::setNum(int n, int base) +{ return base == 10 ? setNum(qlonglong(n), base) : setNum(qulonglong(uint(n)), base); } +inline QByteArray &QByteArray::setNum(uint n, int base) +{ return setNum(qulonglong(n), base); } +inline QByteArray &QByteArray::setNum(float n, char f, int prec) +{ return setNum(double(n),f,prec); } + +inline std::string QByteArray::toStdString() const +{ return std::string(constData(), length()); } + +inline QByteArray QByteArray::fromStdString(const std::string &s) +{ return QByteArray(s.data(), int(s.size())); } + + +__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QByteArray &); +__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QByteArray &); + + + +__attribute__((visibility("default"))) QByteArray qCompress(const uchar* data, int nbytes, int compressionLevel = -1); +__attribute__((visibility("default"))) QByteArray qUncompress(const uchar* data, int nbytes); +inline QByteArray qCompress(const QByteArray& data, int compressionLevel = -1) +{ return qCompress(reinterpret_cast<const uchar *>(data.constData()), data.size(), compressionLevel); } +inline QByteArray qUncompress(const QByteArray& data) +{ return qUncompress(reinterpret_cast<const uchar*>(data.constData()), data.size()); } + + +template<> class QTypeInfo<QByteArray > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QByteArray)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QByteArray >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QByteArray) }; static inline const char *name() { return "QByteArray"; } }; inline void swap(QByteArray &value1, QByteArray &value2) noexcept(noexcept(value1.swap(value2))) { value1.swap(value2); } + + + + +# 1 "../../include/QtCore/qstring.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 1 +# 1 "../../include/QtCore/qstring.h" 2 +# 701 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearray.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 2 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 2 +# 1 "../../include/QtCore/qrefcount.h" 1 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 2 +# 1 "../../include/QtCore/qnamespace.h" 1 +# 52 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 2 +# 78 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + + +class QCharRef; +class QRegExp; +class QRegularExpression; +class QRegularExpressionMatch; +class QString; +class QStringList; +class QTextCodec; +class QStringRef; +template <typename T> class QVector; + +class QLatin1String +{ +public: + constexpr inline QLatin1String() noexcept : m_size(0), m_data(nullptr) {} + constexpr inline explicit QLatin1String(const char *s) noexcept : m_size(s ? int(strlen(s)) : 0), m_data(s) {} + constexpr inline explicit QLatin1String(const char *s, int sz) noexcept : m_size(sz), m_data(s) {} + inline explicit QLatin1String(const QByteArray &s) noexcept : m_size(int(qstrnlen(s.constData(), s.size()))), m_data(s.constData()) {} + + constexpr const char *latin1() const noexcept { return m_data; } + constexpr int size() const noexcept { return m_size; } + constexpr const char *data() const noexcept { return m_data; } + + inline bool operator==(const QString &s) const noexcept; + inline bool operator!=(const QString &s) const noexcept; + inline bool operator>(const QString &s) const noexcept; + inline bool operator<(const QString &s) const noexcept; + inline bool operator>=(const QString &s) const noexcept; + inline bool operator<=(const QString &s) const noexcept; + + + inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const char *s) const; + + inline __attribute__ ((__deprecated__)) bool operator==(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator<(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator>(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const QByteArray &s) const; + + +private: + int m_size; + const char *m_data; +}; +template<> class QTypeInfo<QLatin1String > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QLatin1String)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QLatin1String >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QLatin1String) }; static inline const char *name() { return "QLatin1String"; } }; + + +typedef QLatin1String QLatin1Literal; + + +typedef QTypedArrayData<ushort> QStringData; + + + + +typedef char16_t qunicodechar; +# 161 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +static_assert(bool(sizeof(qunicodechar) == 2), "qunicodechar must typedef an integral type of size 2") + ; +# 199 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +template <int N> +struct QStaticStringData +{ + QArrayData str; + qunicodechar data[N + 1]; + + QStringData *data_ptr() const + { + do { } while ((false) && (str.ref.isStatic())); + return const_cast<QStringData *>(static_cast<const QStringData*>(&str)); + } +}; + +struct QStringDataPtr +{ + QStringData *ptr; +}; + +class __attribute__((visibility("default"))) QString +{ +public: + typedef QStringData Data; + + inline QString() noexcept; + explicit QString(const QChar *unicode, int size = -1); + QString(QChar c); + QString(int size, QChar c); + inline QString(QLatin1String latin1); + inline QString(const QString &) noexcept; + inline ~QString(); + QString &operator=(QChar c); + QString &operator=(const QString &) noexcept; + QString &operator=(QLatin1String latin1); + + inline QString(QString && other) noexcept : d(other.d) { other.d = Data::sharedNull(); } + inline QString &operator=(QString &&other) noexcept + { qSwap(d, other.d); return *this; } + + inline void swap(QString &other) noexcept { qSwap(d, other.d); } + inline int size() const { return d->size; } + inline int count() const { return d->size; } + inline int length() const; + inline bool isEmpty() const; + void resize(int size); + void resize(int size, QChar fillChar); + + QString &fill(QChar c, int size = -1); + void truncate(int pos); + void chop(int n); + + int capacity() const; + inline void reserve(int size); + inline void squeeze(); + + inline const QChar *unicode() const; + inline QChar *data(); + inline const QChar *data() const; + inline const QChar *constData() const; + + inline void detach(); + inline bool isDetached() const; + inline bool isSharedWith(const QString &other) const { return d == other.d; } + void clear(); + + inline const QChar at(int i) const; + const QChar operator[](int i) const; + QCharRef operator[](int i); + const QChar operator[](uint i) const; + QCharRef operator[](uint i); + + QString arg(qlonglong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(qulonglong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(long a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(ulong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(int a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(uint a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(short a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(ushort a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(char a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(QChar a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8) const __attribute__ ((__warn_unused_result__)); + QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8, const QString &a9) const __attribute__ ((__warn_unused_result__)); + + QString &vsprintf(const char *format, va_list ap) __attribute__((format(printf, (2), (0)))); + QString &sprintf(const char *format, ...) __attribute__((format(printf, (2), (3)))); + static QString vasprintf(const char *format, va_list ap) __attribute__((format(printf, (1), (0)))); + static QString asprintf(const char *format, ...) __attribute__((format(printf, (1), (2)))); + + int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QLatin1String s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QStringRef &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QChar c, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QLatin1String s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QStringRef &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + + int indexOf(const QRegExp &, int from = 0) const; + int lastIndexOf(const QRegExp &, int from = -1) const; + inline bool contains(const QRegExp &rx) const { return indexOf(rx) != -1; } + int count(const QRegExp &) const; + + int indexOf(QRegExp &, int from = 0) const; + int lastIndexOf(QRegExp &, int from = -1) const; + inline bool contains(QRegExp &rx) const { return indexOf(rx) != -1; } + + + + int indexOf(const QRegularExpression &re, int from = 0) const; + int indexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; + int lastIndexOf(const QRegularExpression &re, int from = -1) const; + int lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; + bool contains(const QRegularExpression &re) const; + bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; + int count(const QRegularExpression &re) const; + + + enum SectionFlag { + SectionDefault = 0x00, + SectionSkipEmpty = 0x01, + SectionIncludeLeadingSep = 0x02, + SectionIncludeTrailingSep = 0x04, + SectionCaseInsensitiveSeps = 0x08 + }; + typedef QFlags<SectionFlag> SectionFlags; + + QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; + QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; + + QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const; + + + QString section(const QRegularExpression &re, int start, int end = -1, SectionFlags flags = SectionDefault) const; + + QString left(int n) const __attribute__ ((__warn_unused_result__)); + QString right(int n) const __attribute__ ((__warn_unused_result__)); + QString mid(int position, int n = -1) const __attribute__ ((__warn_unused_result__)); + QStringRef leftRef(int n) const __attribute__ ((__warn_unused_result__)); + QStringRef rightRef(int n) const __attribute__ ((__warn_unused_result__)); + QStringRef midRef(int position, int n = -1) const __attribute__ ((__warn_unused_result__)); + + bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((__warn_unused_result__)); + QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((__warn_unused_result__)); + + + + + + + + + + inline __attribute__((always_inline)) QString toLower() const & + { return toLower_helper(*this); } + inline __attribute__((always_inline)) QString toLower() && + { return toLower_helper(*this); } + inline __attribute__((always_inline)) QString toUpper() const & + { return toUpper_helper(*this); } + inline __attribute__((always_inline)) QString toUpper() && + { return toUpper_helper(*this); } + inline __attribute__((always_inline)) QString toCaseFolded() const & + { return toCaseFolded_helper(*this); } + inline __attribute__((always_inline)) QString toCaseFolded() && + { return toCaseFolded_helper(*this); } + inline __attribute__((always_inline)) QString trimmed() const & + { return trimmed_helper(*this); } + inline __attribute__((always_inline)) QString trimmed() && + { return trimmed_helper(*this); } + inline __attribute__((always_inline)) QString simplified() const & + { return simplified_helper(*this); } + inline __attribute__((always_inline)) QString simplified() && + { return simplified_helper(*this); } + + +# 428 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + QString toHtmlEscaped() const __attribute__ ((__warn_unused_result__)); + + QString &insert(int i, QChar c); + QString &insert(int i, const QChar *uc, int len); + inline QString &insert(int i, const QString &s) { return insert(i, s.constData(), s.length()); } + inline QString &insert(int i, const QStringRef &s); + QString &insert(int i, QLatin1String s); + QString &append(QChar c); + QString &append(const QChar *uc, int len); + QString &append(const QString &s); + QString &append(const QStringRef &s); + QString &append(QLatin1String s); + inline QString &prepend(QChar c) { return insert(0, c); } + inline QString &prepend(const QChar *uc, int len) { return insert(0, uc, len); } + inline QString &prepend(const QString &s) { return insert(0, s); } + inline QString &prepend(const QStringRef &s) { return insert(0, s); } + inline QString &prepend(QLatin1String s) { return insert(0, s); } + + inline QString &operator+=(QChar c) { + if (d->ref.isShared() || uint(d->size) + 2u > d->alloc) + reallocData(uint(d->size) + 2u, true); + d->data()[d->size++] = c.unicode(); + d->data()[d->size] = '\0'; + return *this; + } + + inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); } + inline QString &operator+=(const QString &s) { return append(s); } + inline QString &operator+=(const QStringRef &s) { return append(s); } + inline QString &operator+=(QLatin1String s) { return append(s); } + + QString &remove(int i, int len); + QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(int i, int len, QChar after); + QString &replace(int i, int len, const QChar *s, int slen); + QString &replace(int i, int len, const QString &after); + QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QChar *before, int blen, const QChar *after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QString &before, const QString &after, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + + QString &replace(const QRegExp &rx, const QString &after); + inline QString &remove(const QRegExp &rx) + { return replace(rx, QString()); } + + + QString &replace(const QRegularExpression &re, const QString &after); + inline QString &remove(const QRegularExpression &re) + { return replace(re, QString()); } + + + enum SplitBehavior { KeepEmptyParts, SkipEmptyParts }; + + QStringList split(const QString &sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + QVector<QStringRef> splitRef(const QString &sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + QStringList split(QChar sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + QVector<QStringRef> splitRef(QChar sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + + QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((__warn_unused_result__)); + QVector<QStringRef> splitRef(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((__warn_unused_result__)); + + + QStringList split(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((__warn_unused_result__)); + QVector<QStringRef> splitRef(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((__warn_unused_result__)); + + enum NormalizationForm { + NormalizationForm_D, + NormalizationForm_C, + NormalizationForm_KD, + NormalizationForm_KC + }; + QString normalized(NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const __attribute__ ((__warn_unused_result__)); + + QString repeated(int times) const __attribute__ ((__warn_unused_result__)); + + const ushort *utf16() const; + + + QByteArray toLatin1() const & __attribute__ ((__warn_unused_result__)) + { return toLatin1_helper(*this); } + QByteArray toLatin1() && __attribute__ ((__warn_unused_result__)) + { return toLatin1_helper_inplace(*this); } + QByteArray toUtf8() const & __attribute__ ((__warn_unused_result__)) + { return toUtf8_helper(*this); } + QByteArray toUtf8() && __attribute__ ((__warn_unused_result__)) + { return toUtf8_helper(*this); } + QByteArray toLocal8Bit() const & __attribute__ ((__warn_unused_result__)) + { return toLocal8Bit_helper(constData(), size()); } + QByteArray toLocal8Bit() && __attribute__ ((__warn_unused_result__)) + { return toLocal8Bit_helper(constData(), size()); } + + + + + + QVector<uint> toUcs4() const __attribute__ ((__warn_unused_result__)); + + + static inline QString fromLatin1(const char *str, int size = -1) + { + QStringDataPtr dataPtr = { fromLatin1_helper(str, (str && size == -1) ? int(strlen(str)) : size) }; + return QString(dataPtr); + } + static inline QString fromUtf8(const char *str, int size = -1) + { + return fromUtf8_helper(str, (str && size == -1) ? int(strlen(str)) : size); + } + static inline QString fromLocal8Bit(const char *str, int size = -1) + { + return fromLocal8Bit_helper(str, (str && size == -1) ? int(strlen(str)) : size); + } + static inline QString fromLatin1(const QByteArray &str) + { return str.isNull() ? QString() : fromLatin1(str.data(), qstrnlen(str.constData(), str.size())); } + static inline QString fromUtf8(const QByteArray &str) + { return str.isNull() ? QString() : fromUtf8(str.data(), qstrnlen(str.constData(), str.size())); } + static inline QString fromLocal8Bit(const QByteArray &str) + { return str.isNull() ? QString() : fromLocal8Bit(str.data(), qstrnlen(str.constData(), str.size())); } + static QString fromUtf16(const ushort *, int size = -1); + static QString fromUcs4(const uint *, int size = -1); + static QString fromRawData(const QChar *, int size); + + + static QString fromUtf16(const char16_t *str, int size = -1) + { return fromUtf16(reinterpret_cast<const ushort *>(str), size); } + static QString fromUcs4(const char32_t *str, int size = -1) + { return fromUcs4(reinterpret_cast<const uint *>(str), size); } +# 575 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + inline int toWCharArray(wchar_t *array) const; + static inline QString fromWCharArray(const wchar_t *string, int size = -1) __attribute__ ((__warn_unused_result__)); + + QString &setRawData(const QChar *unicode, int size); + QString &setUnicode(const QChar *unicode, int size); + inline QString &setUtf16(const ushort *utf16, int size); + + int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + + static inline int compare(const QString &s1, const QString &s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept + { return s1.compare(s2, cs); } + + static inline int compare(const QString &s1, QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept + { return s1.compare(s2, cs); } + static inline int compare(QLatin1String s1, const QString &s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept + { return -s2.compare(s1, cs); } + + int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + static int compare(const QString &s1, const QStringRef &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) noexcept; + + int localeAwareCompare(const QString& s) const; + static int localeAwareCompare(const QString& s1, const QString& s2) + { return s1.localeAwareCompare(s2); } + + int localeAwareCompare(const QStringRef &s) const; + static int localeAwareCompare(const QString& s1, const QStringRef& s2); + + + short toShort(bool *ok=nullptr, int base=10) const; + ushort toUShort(bool *ok=nullptr, int base=10) const; + int toInt(bool *ok=nullptr, int base=10) const; + uint toUInt(bool *ok=nullptr, int base=10) const; + long toLong(bool *ok=nullptr, int base=10) const; + ulong toULong(bool *ok=nullptr, int base=10) const; + qlonglong toLongLong(bool *ok=nullptr, int base=10) const; + qulonglong toULongLong(bool *ok=nullptr, int base=10) const; + float toFloat(bool *ok=nullptr) const; + double toDouble(bool *ok=nullptr) const; + + QString &setNum(short, int base=10); + QString &setNum(ushort, int base=10); + QString &setNum(int, int base=10); + QString &setNum(uint, int base=10); + QString &setNum(long, int base=10); + QString &setNum(ulong, int base=10); + QString &setNum(qlonglong, int base=10); + QString &setNum(qulonglong, int base=10); + QString &setNum(float, char f='g', int prec=6); + QString &setNum(double, char f='g', int prec=6); + + static QString number(int, int base=10); + static QString number(uint, int base=10); + static QString number(long, int base=10); + static QString number(ulong, int base=10); + static QString number(qlonglong, int base=10); + static QString number(qulonglong, int base=10); + static QString number(double, char f='g', int prec=6); + + friend __attribute__((visibility("default"))) bool operator==(const QString &s1, const QString &s2) noexcept; + friend __attribute__((visibility("default"))) bool operator<(const QString &s1, const QString &s2) noexcept; + friend inline bool operator>(const QString &s1, const QString &s2) noexcept { return s2 < s1; } + friend inline bool operator!=(const QString &s1, const QString &s2) noexcept { return !(s1 == s2); } + friend inline bool operator<=(const QString &s1, const QString &s2) noexcept { return !(s1 > s2); } + friend inline bool operator>=(const QString &s1, const QString &s2) noexcept { return !(s1 < s2); } + + bool operator==(QLatin1String s) const noexcept; + bool operator<(QLatin1String s) const noexcept; + bool operator>(QLatin1String s) const noexcept; + inline bool operator!=(QLatin1String s) const noexcept { return !operator==(s); } + inline bool operator<=(QLatin1String s) const noexcept { return !operator>(s); } + inline bool operator>=(QLatin1String s) const noexcept { return !operator<(s); } +# 663 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + inline __attribute__ ((__deprecated__)) QString(const char *ch) + : d(fromAscii_helper(ch, ch ? int(strlen(ch)) : -1)) + {} + inline __attribute__ ((__deprecated__)) QString(const QByteArray &a) + : d(fromAscii_helper(a.constData(), qstrnlen(a.constData(), a.size()))) + {} + inline __attribute__ ((__deprecated__)) QString &operator=(const char *ch) + { return (*this = fromUtf8(ch)); } + inline __attribute__ ((__deprecated__)) QString &operator=(const QByteArray &a) + { return (*this = fromUtf8(a)); } + inline __attribute__ ((__deprecated__)) QString &operator=(char c) + { return (*this = QChar::fromLatin1(c)); } + + + inline __attribute__ ((__deprecated__)) QString &prepend(const char *s) + { return prepend(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &prepend(const QByteArray &s) + { return prepend(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &append(const char *s) + { return append(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &append(const QByteArray &s) + { return append(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &insert(int i, const char *s) + { return insert(i, QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &insert(int i, const QByteArray &s) + { return insert(i, QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &operator+=(const char *s) + { return append(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &operator+=(const QByteArray &s) + { return append(QString::fromUtf8(s)); } + inline __attribute__ ((__deprecated__)) QString &operator+=(char c) + { return append(QChar::fromLatin1(c)); } + + inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const char *s) const; + + inline __attribute__ ((__deprecated__)) bool operator==(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator<(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator>(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const QByteArray &s) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const QByteArray &s) const; + + friend inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QString &s2); + friend inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QString &s2); + friend inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QString &s2); + friend inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QString &s2); + friend inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QString &s2); + friend inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QString &s2); + + friend inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QStringRef &s2); + friend inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QStringRef &s2); + friend inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QStringRef &s2); + friend inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QStringRef &s2); + friend inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QStringRef &s2); + friend inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QStringRef &s2); + + + typedef QChar *iterator; + typedef const QChar *const_iterator; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + inline iterator begin(); + inline const_iterator begin() const; + inline const_iterator cbegin() const; + inline const_iterator constBegin() const; + inline iterator end(); + inline const_iterator end() const; + inline const_iterator cend() const; + inline const_iterator constEnd() const; + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + + + typedef int size_type; + typedef qptrdiff difference_type; + typedef const QChar & const_reference; + typedef QChar & reference; + typedef QChar *pointer; + typedef const QChar *const_pointer; + typedef QChar value_type; + inline void push_back(QChar c) { append(c); } + inline void push_back(const QString &s) { append(s); } + inline void push_front(QChar c) { prepend(c); } + inline void push_front(const QString &s) { prepend(s); } + + static inline QString fromStdString(const std::string &s); + inline std::string toStdString() const; + static inline QString fromStdWString(const std::wstring &s); + inline std::wstring toStdWString() const; + + + static inline QString fromStdU16String(const std::u16string &s); + inline std::u16string toStdU16String() const; + static inline QString fromStdU32String(const std::u32string &s); + inline std::u32string toStdU32String() const; +# 780 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + struct Null { }; + static const Null null; + inline QString(const Null &): d(Data::sharedNull()) {} + inline QString &operator=(const Null &) { *this = QString(); return *this; } + inline bool isNull() const { return d == Data::sharedNull(); } + + + bool isSimpleText() const; + bool isRightToLeft() const; + + QString(int size, Qt::Initialization); + constexpr inline QString(QStringDataPtr dd) : d(dd.ptr) {} + +private: +# 803 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + Data *d; + + void reallocData(uint alloc, bool grow = false); + void expand(int i); + QString multiArg(int numArgs, const QString **args) const; + static int compare_helper(const QChar *data1, int length1, + const QChar *data2, int length2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept; + static int compare_helper(const QChar *data1, int length1, + const char *data2, int length2, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + static int compare_helper(const QChar *data1, int length1, + QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept; + static int localeAwareCompare_helper(const QChar *data1, int length1, + const QChar *data2, int length2); + static QString toLower_helper(const QString &str); + static QString toLower_helper(QString &str); + static QString toUpper_helper(const QString &str); + static QString toUpper_helper(QString &str); + static QString toCaseFolded_helper(const QString &str); + static QString toCaseFolded_helper(QString &str); + static QString trimmed_helper(const QString &str); + static QString trimmed_helper(QString &str); + static QString simplified_helper(const QString &str); + static QString simplified_helper(QString &str); + static Data *fromLatin1_helper(const char *str, int size = -1); + static Data *fromAscii_helper(const char *str, int size = -1); + static QString fromUtf8_helper(const char *str, int size); + static QString fromLocal8Bit_helper(const char *, int size); + static QByteArray toLatin1_helper(const QString &); + static QByteArray toLatin1_helper(const QChar *data, int size); + static QByteArray toLatin1_helper_inplace(QString &); + static QByteArray toUtf8_helper(const QString &); + static QByteArray toLocal8Bit_helper(const QChar *data, int size); + static int toUcs4_helper(const ushort *uc, int length, uint *out); + static qlonglong toIntegral_helper(const QChar *data, int len, bool *ok, int base); + static qulonglong toIntegral_helper(const QChar *data, uint len, bool *ok, int base); + void replace_helper(uint *indices, int nIndices, int blen, const QChar *after, int alen); + friend class QCharRef; + friend class QTextCodec; + friend class QStringRef; + friend class QByteArray; + friend class QCollator; + friend struct QAbstractConcatenable; + + template <typename T> static + T toIntegral_helper(const QChar *data, int len, bool *ok, int base) + { + + const bool isUnsigned = T(0) < T(-1); + typedef typename QtPrivate::QConditional<isUnsigned, qulonglong, qlonglong>::Type Int64; + typedef typename QtPrivate::QConditional<isUnsigned, uint, int>::Type Int32; + + + Int64 val = toIntegral_helper(data, Int32(len), ok, base); + if (T(val) != val) { + if (ok) + *ok = false; + val = 0; + } + return T(val); + } + +public: + typedef Data * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +inline QString::QString(QLatin1String aLatin1) : d(fromLatin1_helper(aLatin1.latin1(), aLatin1.size())) +{ } +inline int QString::length() const +{ return d->size; } +inline const QChar QString::at(int i) const +{ do { } while ((false) && (uint(i) < uint(size()))); return d->data()[i]; } +inline const QChar QString::operator[](int i) const +{ do { } while ((false) && (uint(i) < uint(size()))); return d->data()[i]; } +inline const QChar QString::operator[](uint i) const +{ do { } while ((false) && (i < uint(size()))); return d->data()[i]; } +inline bool QString::isEmpty() const +{ return d->size == 0; } +inline const QChar *QString::unicode() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline const QChar *QString::data() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline QChar *QString::data() +{ detach(); return reinterpret_cast<QChar*>(d->data()); } +inline const QChar *QString::constData() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline void QString::detach() +{ if (d->ref.isShared() || (d->offset != sizeof(QStringData))) reallocData(uint(d->size) + 1u); } +inline bool QString::isDetached() const +{ return !d->ref.isShared(); } +inline void QString::clear() +{ if (!isNull()) *this = QString(); } +inline QString::QString(const QString &other) noexcept : d(other.d) +{ do { } while ((false) && (&other != this)); d->ref.ref(); } +inline int QString::capacity() const +{ return d->alloc ? d->alloc - 1 : 0; } +inline QString &QString::setNum(short n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(ushort n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(int n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(uint n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(long n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(ulong n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(float n, char f, int prec) +{ return setNum(double(n),f,prec); } +inline QString QString::arg(int a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(long a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(short a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(ushort a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(const QString &a1, const QString &a2) const +{ const QString *args[2] = { &a1, &a2 }; return multiArg(2, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3) const +{ const QString *args[3] = { &a1, &a2, &a3 }; return multiArg(3, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4) const +{ const QString *args[4] = { &a1, &a2, &a3, &a4 }; return multiArg(4, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5) const +{ const QString *args[5] = { &a1, &a2, &a3, &a4, &a5 }; return multiArg(5, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6) const +{ const QString *args[6] = { &a1, &a2, &a3, &a4, &a5, &a6 }; return multiArg(6, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7) const +{ const QString *args[7] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7 }; return multiArg(7, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8) const +{ const QString *args[8] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 }; return multiArg(8, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8, const QString &a9) const +{ const QString *args[9] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9 }; return multiArg(9, args); } + +inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const +{ return section(QString(asep), astart, aend, aflags); } + + +# 957 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +#pragma GCC diagnostic push +# 957 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + + + +inline int QString::toWCharArray(wchar_t *array) const +{ + if (sizeof(wchar_t) == sizeof(QChar)) { + memcpy(array, d->data(), sizeof(QChar) * size()); + return size(); + } else { + return toUcs4_helper(d->data(), size(), reinterpret_cast<uint *>(array)); + } +} + + +# 970 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +#pragma GCC diagnostic pop +# 970 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" + + +inline QString QString::fromWCharArray(const wchar_t *string, int size) +{ + return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16(reinterpret_cast<const ushort *>(string), size) + : fromUcs4(reinterpret_cast<const uint *>(string), size); +} + + +class __attribute__((visibility("default"))) QCharRef { + QString &s; + int i; + inline QCharRef(QString &str, int idx) + : s(str),i(idx) {} + friend class QString; +public: + + + + + inline operator QChar() const + { return i < s.d->size ? s.d->data()[i] : 0; } + inline QCharRef &operator=(QChar c) + { if (i >= s.d->size) s.expand(i); else s.detach(); + s.d->data()[i] = c.unicode(); return *this; } + + + + inline __attribute__ ((__deprecated__)) QCharRef &operator=(char c) + { return operator=(QChar::fromLatin1(c)); } + inline __attribute__ ((__deprecated__)) QCharRef &operator=(uchar c) + { return operator=(QChar::fromLatin1(c)); } + + inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); } + inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(short rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(uint rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(int rc) { return operator=(QChar(rc)); } + + + inline bool isNull() const { return QChar(*this).isNull(); } + inline bool isPrint() const { return QChar(*this).isPrint(); } + inline bool isPunct() const { return QChar(*this).isPunct(); } + inline bool isSpace() const { return QChar(*this).isSpace(); } + inline bool isMark() const { return QChar(*this).isMark(); } + inline bool isLetter() const { return QChar(*this).isLetter(); } + inline bool isNumber() const { return QChar(*this).isNumber(); } + inline bool isLetterOrNumber() { return QChar(*this).isLetterOrNumber(); } + inline bool isDigit() const { return QChar(*this).isDigit(); } + inline bool isLower() const { return QChar(*this).isLower(); } + inline bool isUpper() const { return QChar(*this).isUpper(); } + inline bool isTitleCase() const { return QChar(*this).isTitleCase(); } + + inline int digitValue() const { return QChar(*this).digitValue(); } + QChar toLower() const { return QChar(*this).toLower(); } + QChar toUpper() const { return QChar(*this).toUpper(); } + QChar toTitleCase () const { return QChar(*this).toTitleCase(); } + + QChar::Category category() const { return QChar(*this).category(); } + QChar::Direction direction() const { return QChar(*this).direction(); } + QChar::JoiningType joiningType() const { return QChar(*this).joiningType(); } + + __attribute__ ((__deprecated__)) QChar::Joining joining() const + { + switch (QChar(*this).joiningType()) { + case QChar::Joining_Causing: return QChar::Center; + case QChar::Joining_Dual: return QChar::Dual; + case QChar::Joining_Right: return QChar::Right; + case QChar::Joining_None: + case QChar::Joining_Left: + case QChar::Joining_Transparent: + default: return QChar::OtherJoining; + } + } + + bool hasMirrored() const { return QChar(*this).hasMirrored(); } + QChar mirroredChar() const { return QChar(*this).mirroredChar(); } + QString decomposition() const { return QChar(*this).decomposition(); } + QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); } + uchar combiningClass() const { return QChar(*this).combiningClass(); } + + inline QChar::Script script() const { return QChar(*this).script(); } + + QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); } + + inline uchar cell() const { return QChar(*this).cell(); } + inline uchar row() const { return QChar(*this).row(); } + inline void setCell(uchar cell); + inline void setRow(uchar row); + + + + + char toLatin1() const { return QChar(*this).toLatin1(); } + ushort unicode() const { return QChar(*this).unicode(); } + ushort& unicode() { return s.data()[i].unicode(); } + +}; +template<> class QTypeInfo<QCharRef > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QCharRef)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QCharRef >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QCharRef) }; static inline const char *name() { return "QCharRef"; } }; + +inline void QCharRef::setRow(uchar arow) { QChar(*this).setRow(arow); } +inline void QCharRef::setCell(uchar acell) { QChar(*this).setCell(acell); } + + +inline QString::QString() noexcept : d(Data::sharedNull()) {} +inline QString::~QString() { if (!d->ref.deref()) Data::deallocate(d); } + +inline void QString::reserve(int asize) +{ + if (d->ref.isShared() || uint(asize) >= d->alloc) + reallocData(qMax(asize, d->size) + 1u); + + if (!d->capacityReserved) { + + d->capacityReserved = true; + } +} + +inline void QString::squeeze() +{ + if (d->ref.isShared() || uint(d->size) + 1u < d->alloc) + reallocData(uint(d->size) + 1u); + + if (d->capacityReserved) { + + + d->capacityReserved = false; + } +} + +inline QString &QString::setUtf16(const ushort *autf16, int asize) +{ return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); } +inline QCharRef QString::operator[](int i) +{ do { } while ((false) && (i >= 0)); return QCharRef(*this, i); } +inline QCharRef QString::operator[](uint i) +{ return QCharRef(*this, i); } +inline QString::iterator QString::begin() +{ detach(); return reinterpret_cast<QChar*>(d->data()); } +inline QString::const_iterator QString::begin() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline QString::const_iterator QString::cbegin() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline QString::const_iterator QString::constBegin() const +{ return reinterpret_cast<const QChar*>(d->data()); } +inline QString::iterator QString::end() +{ detach(); return reinterpret_cast<QChar*>(d->data() + d->size); } +inline QString::const_iterator QString::end() const +{ return reinterpret_cast<const QChar*>(d->data() + d->size); } +inline QString::const_iterator QString::cend() const +{ return reinterpret_cast<const QChar*>(d->data() + d->size); } +inline QString::const_iterator QString::constEnd() const +{ return reinterpret_cast<const QChar*>(d->data() + d->size); } +inline bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(const QStringRef &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(QLatin1String s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(QChar c, Qt::CaseSensitivity cs) const +{ return indexOf(c, 0, cs) != -1; } + + +inline bool operator==(QString::Null, QString::Null) { return true; } +inline bool operator==(QString::Null, const QString &s) { return s.isNull(); } +inline bool operator==(const QString &s, QString::Null) { return s.isNull(); } +inline bool operator!=(QString::Null, QString::Null) { return false; } +inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); } +inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); } + +inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept +{ return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), s1.size())); } +inline bool operator!=(QLatin1String s1, QLatin1String s2) noexcept +{ return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), s1.size())); } +inline bool operator<(QLatin1String s1, QLatin1String s2) noexcept +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r < 0) || (r == 0 && s1.size() < s2.size()); } +inline bool operator<=(QLatin1String s1, QLatin1String s2) noexcept +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r < 0) || (r == 0 && s1.size() <= s2.size()); } +inline bool operator>(QLatin1String s1, QLatin1String s2) noexcept +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r > 0) || (r == 0 && s1.size() > s2.size()); } +inline bool operator>=(QLatin1String s1, QLatin1String s2) noexcept +{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size())); + return (r > 0) || (r == 0 && s1.size() >= s2.size()); } + +inline bool QLatin1String::operator==(const QString &s) const noexcept +{ return s == *this; } +inline bool QLatin1String::operator!=(const QString &s) const noexcept +{ return s != *this; } +inline bool QLatin1String::operator>(const QString &s) const noexcept +{ return s < *this; } +inline bool QLatin1String::operator<(const QString &s) const noexcept +{ return s > *this; } +inline bool QLatin1String::operator>=(const QString &s) const noexcept +{ return s <= *this; } +inline bool QLatin1String::operator<=(const QString &s) const noexcept +{ return s >= *this; } + + +inline bool QString::operator==(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) == 0; } +inline bool QString::operator!=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) != 0; } +inline bool QString::operator<(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) < 0; } +inline bool QString::operator>(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) > 0; } +inline bool QString::operator<=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) <= 0; } +inline bool QString::operator>=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) >= 0; } + +inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; } +inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; } +inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; } +inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; } +inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; } +inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; } + +inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, QLatin1String s2) +{ return QString::fromUtf8(s1) == s2; } +inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, QLatin1String s2) +{ return QString::fromUtf8(s1) != s2; } +inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) < s2); } +inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) > s2); } +inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) <= s2); } +inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) >= s2); } + +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator==(const char *s) const +{ return QString::fromUtf8(s) == *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator!=(const char *s) const +{ return QString::fromUtf8(s) != *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator<(const char *s) const +{ return QString::fromUtf8(s) > *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator>(const char *s) const +{ return QString::fromUtf8(s) < *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator<=(const char *s) const +{ return QString::fromUtf8(s) >= *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator>=(const char *s) const +{ return QString::fromUtf8(s) <= *this; } + +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator==(const QByteArray &s) const +{ return QString::fromUtf8(s) == *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator!=(const QByteArray &s) const +{ return QString::fromUtf8(s) != *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator<(const QByteArray &s) const +{ return QString::fromUtf8(s) > *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator>(const QByteArray &s) const +{ return QString::fromUtf8(s) < *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator<=(const QByteArray &s) const +{ return QString::fromUtf8(s) >= *this; } +inline __attribute__ ((__deprecated__)) bool QLatin1String::operator>=(const QByteArray &s) const +{ return QString::fromUtf8(s) <= *this; } + +inline __attribute__ ((__deprecated__)) bool QString::operator==(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), qstrnlen(s.constData(), s.size())) == 0; } +inline __attribute__ ((__deprecated__)) bool QString::operator!=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), qstrnlen(s.constData(), s.size())) != 0; } +inline __attribute__ ((__deprecated__)) bool QString::operator<(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) < 0; } +inline __attribute__ ((__deprecated__)) bool QString::operator>(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) > 0; } +inline __attribute__ ((__deprecated__)) bool QString::operator<=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) <= 0; } +inline __attribute__ ((__deprecated__)) bool QString::operator>=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) >= 0; } + +inline bool QByteArray::operator==(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), qstrnlen(constData(), size())) == 0; } +inline bool QByteArray::operator!=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), qstrnlen(constData(), size())) != 0; } +inline bool QByteArray::operator<(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) > 0; } +inline bool QByteArray::operator>(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) < 0; } +inline bool QByteArray::operator<=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) >= 0; } +inline bool QByteArray::operator>=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) <= 0; } +# 1304 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" +inline std::string QString::toStdString() const +{ return toUtf8().toStdString(); } + +inline QString QString::fromStdString(const std::string &s) +{ return fromUtf8(s.data(), int(s.size())); } + +inline std::wstring QString::toStdWString() const +{ + std::wstring str; + str.resize(length()); + + + + + + + + str.resize(toWCharArray(&(*str.begin()))); + return str; +} + +inline QString QString::fromStdWString(const std::wstring &s) +{ return fromWCharArray(s.data(), int(s.size())); } + + +inline QString QString::fromStdU16String(const std::u16string &s) +{ return fromUtf16(s.data(), int(s.size())); } + +inline std::u16string QString::toStdU16String() const +{ return std::u16string(reinterpret_cast<const char16_t*>(utf16()), length()); } + +inline QString QString::fromStdU32String(const std::u32string &s) +{ return fromUcs4(s.data(), int(s.size())); } + +inline std::u32string QString::toStdU32String() const +{ + std::u32string u32str(length(), char32_t(0)); + int len = toUcs4_helper(d->data(), length(), reinterpret_cast<uint*>(&u32str[0])); + u32str.resize(len); + return u32str; +} + + + +__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QString &); +__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QString &); + + +template<> class QTypeInfo<QString > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QString)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QString >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QString) }; static inline const char *name() { return "QString"; } }; inline void swap(QString &value1, QString &value2) noexcept(noexcept(value1.swap(value2))) { value1.swap(value2); } +constexpr inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) noexcept { return QFlags<QString::SectionFlags::enum_type>(f1) | f2; } constexpr inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QFlags<QString::SectionFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QString::SectionFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + + +class __attribute__((visibility("default"))) QStringRef { + const QString *m_string; + int m_position; + int m_size; +public: + typedef QString::size_type size_type; + typedef QString::value_type value_type; + typedef const QChar *const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef QString::const_pointer const_pointer; + typedef QString::const_reference const_reference; + + + inline QStringRef() : m_string(nullptr), m_position(0), m_size(0) {} + inline QStringRef(const QString *string, int position, int size); + inline QStringRef(const QString *string); + + + + QStringRef(const QStringRef &other) noexcept + :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) + {} + + QStringRef(QStringRef &&other) noexcept : m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} + QStringRef &operator=(QStringRef &&other) noexcept { return *this = other; } + + QStringRef &operator=(const QStringRef &other) noexcept { + m_string = other.m_string; m_position = other.m_position; + m_size = other.m_size; return *this; + } + inline ~QStringRef(){} + + + inline const QString *string() const { return m_string; } + inline int position() const { return m_position; } + inline int size() const { return m_size; } + inline int count() const { return m_size; } + inline int length() const { return m_size; } + + int indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QLatin1String str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QStringRef &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QLatin1String str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QStringRef &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + QVector<QStringRef> split(const QString &sep, QString::SplitBehavior behavior = QString::KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + QVector<QStringRef> split(QChar sep, QString::SplitBehavior behavior = QString::KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((__warn_unused_result__)); + + QStringRef left(int n) const __attribute__ ((__warn_unused_result__)); + QStringRef right(int n) const __attribute__ ((__warn_unused_result__)); + QStringRef mid(int pos, int n = -1) const __attribute__ ((__warn_unused_result__)); + + void truncate(int pos) noexcept { m_size = qBound(0, pos, m_size); } + + bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(const QStringRef &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QStringRef &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline QStringRef &operator=(const QString *string); + + inline const QChar *unicode() const { + if (!m_string) + return reinterpret_cast<const QChar *>(QString::Data::sharedNull()->data()); + return m_string->unicode() + m_position; + } + inline const QChar *data() const { return unicode(); } + inline const QChar *constData() const { return unicode(); } + + inline const_iterator begin() const { return unicode(); } + inline const_iterator cbegin() const { return unicode(); } + inline const_iterator end() const { return unicode() + size(); } + inline const_iterator cend() const { return unicode() + size(); } + inline const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + inline const_reverse_iterator crbegin() const { return rbegin(); } + inline const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + inline const_reverse_iterator crend() const { return rend(); } + + + + + + QByteArray toLatin1() const __attribute__ ((__warn_unused_result__)); + QByteArray toUtf8() const __attribute__ ((__warn_unused_result__)); + QByteArray toLocal8Bit() const __attribute__ ((__warn_unused_result__)); + QVector<uint> toUcs4() const __attribute__ ((__warn_unused_result__)); + + inline void clear() { m_string = nullptr; m_position = m_size = 0; } + QString toString() const; + inline bool isEmpty() const { return m_size == 0; } + inline bool isNull() const { return m_string == nullptr || m_string->isNull(); } + + QStringRef appendTo(QString *string) const; + + inline const QChar at(int i) const + { do { } while ((false) && (uint(i) < uint(size()))); return m_string->at(i + m_position); } + QChar operator[](int i) const { return at(i); } + + + + inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator<=(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>(const char *s) const; + inline __attribute__ ((__deprecated__)) bool operator>=(const char *s) const; + + + int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + int compare(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept; + static int compare(const QStringRef &s1, const QString &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) noexcept; + static int compare(const QStringRef &s1, const QStringRef &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) noexcept; + static int compare(const QStringRef &s1, QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept; + + int localeAwareCompare(const QString &s) const; + int localeAwareCompare(const QStringRef &s) const; + static int localeAwareCompare(const QStringRef &s1, const QString &s2); + static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); + + QStringRef trimmed() const __attribute__ ((__warn_unused_result__)); + short toShort(bool *ok = nullptr, int base = 10) const; + ushort toUShort(bool *ok = nullptr, int base = 10) const; + int toInt(bool *ok = nullptr, int base = 10) const; + uint toUInt(bool *ok = nullptr, int base = 10) const; + long toLong(bool *ok = nullptr, int base = 10) const; + ulong toULong(bool *ok = nullptr, int base = 10) const; + qlonglong toLongLong(bool *ok = nullptr, int base = 10) const; + qulonglong toULongLong(bool *ok = nullptr, int base = 10) const; + float toFloat(bool *ok = nullptr) const; + double toDouble(bool *ok = nullptr) const; +}; +template<> class QTypeInfo<QStringRef > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QStringRef)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QStringRef >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QStringRef) }; static inline const char *name() { return "QStringRef"; } }; + +inline QStringRef &QStringRef::operator=(const QString *aString) +{ m_string = aString; m_position = 0; m_size = aString?aString->size():0; return *this; } + +inline QStringRef::QStringRef(const QString *aString, int aPosition, int aSize) + :m_string(aString), m_position(aPosition), m_size(aSize){} + +inline QStringRef::QStringRef(const QString *aString) + :m_string(aString), m_position(0), m_size(aString?aString->size() : 0){} + +__attribute__((visibility("default"))) bool operator==(const QStringRef &s1, const QStringRef &s2) noexcept; +inline bool operator!=(const QStringRef &s1, const QStringRef &s2) noexcept +{ return !(s1 == s2); } +__attribute__((visibility("default"))) bool operator==(const QString &s1, const QStringRef &s2) noexcept; +inline bool operator!=(const QString &s1, const QStringRef &s2) noexcept +{ return !(s1 == s2); } +inline bool operator==(const QStringRef &s1, const QString &s2) noexcept +{ return s2 == s1; } +inline bool operator!=(const QStringRef &s1, const QString &s2) noexcept +{ return s2 != s1; } +__attribute__((visibility("default"))) bool operator==(QLatin1String s1, const QStringRef &s2) noexcept; +inline bool operator!=(QLatin1String s1, const QStringRef &s2) noexcept +{ return !(s1 == s2); } +inline bool operator==(const QStringRef &s1, QLatin1String s2) noexcept +{ return s2 == s1; } +inline bool operator!=(const QStringRef &s1, QLatin1String s2) noexcept +{ return s2 != s1; } + +__attribute__((visibility("default"))) bool operator<(const QStringRef &s1, const QStringRef &s2) noexcept; +inline bool operator>(const QStringRef &s1, const QStringRef &s2) noexcept +{ return s2 < s1; } +inline bool operator<=(const QStringRef &s1, const QStringRef &s2) noexcept +{ return !(s1 > s2); } +inline bool operator>=(const QStringRef &s1, const QStringRef &s2) noexcept +{ return !(s1 < s2); } + + +inline __attribute__ ((__deprecated__)) bool QStringRef::operator==(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) == 0; } +inline __attribute__ ((__deprecated__)) bool QStringRef::operator!=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) != 0; } +inline __attribute__ ((__deprecated__)) bool QStringRef::operator<(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) < 0; } +inline __attribute__ ((__deprecated__)) bool QStringRef::operator<=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) <= 0; } +inline __attribute__ ((__deprecated__)) bool QStringRef::operator>(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) > 0; } +inline __attribute__ ((__deprecated__)) bool QStringRef::operator>=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) >= 0; } + +inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; } +inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; } +inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; } +inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; } +inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; } +inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; } + + +inline int QString::compare(const QStringRef &s, Qt::CaseSensitivity cs) const noexcept +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QString::compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity cs) noexcept +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QString &s, Qt::CaseSensitivity cs) const noexcept +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QStringRef::compare(const QStringRef &s, Qt::CaseSensitivity cs) const noexcept +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QStringRef::compare(QLatin1String s, Qt::CaseSensitivity cs) const noexcept +{ return QString::compare_helper(constData(), length(), s, cs); } +inline int QStringRef::compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity cs) noexcept +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QStringRef &s1, const QStringRef &s2, Qt::CaseSensitivity cs) noexcept +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QStringRef &s1, QLatin1String s2, Qt::CaseSensitivity cs) noexcept +{ return QString::compare_helper(s1.constData(), s1.length(), s2, cs); } + +inline int QString::localeAwareCompare(const QStringRef &s) const +{ return localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QString::localeAwareCompare(const QString& s1, const QStringRef& s2) +{ return localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } +inline int QStringRef::localeAwareCompare(const QString &s) const +{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s) const +{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s2) +{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2) +{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } + +inline bool QStringRef::contains(const QString &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QStringRef::contains(QLatin1String s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QStringRef::contains(QChar c, Qt::CaseSensitivity cs) const +{ return indexOf(c, 0, cs) != -1; } +inline bool QStringRef::contains(const QStringRef &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } + +inline QString &QString::insert(int i, const QStringRef &s) +{ return insert(i, s.constData(), s.length()); } + +namespace Qt { + + + + + +} + + + + +# 1 "../../include/QtCore/qstringbuilder.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringbuilder.h" 1 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringbuilder.h" +# 1 "../../include/QtCore/qstring.h" 1 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringbuilder.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 1 +# 52 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringbuilder.h" 2 + + + + + + +struct __attribute__((visibility("default"))) QAbstractConcatenable +{ +protected: + static void convertFromAscii(const char *a, int len, QChar *&out) noexcept; + static inline void convertFromAscii(char a, QChar *&out) noexcept + { + *out++ = QLatin1Char(a); + } + static void appendLatin1To(const char *a, int len, QChar *out) noexcept; +}; + +template <typename T> struct QConcatenable {}; + +namespace QtStringBuilder { + template <typename A, typename B> struct ConvertToTypeHelper + { typedef A ConvertTo; }; + template <typename T> struct ConvertToTypeHelper<T, QString> + { typedef QString ConvertTo; }; +} + +template<typename Builder, typename T> +struct QStringBuilderCommon +{ + T toUpper() const { return resolved().toUpper(); } + T toLower() const { return resolved().toLower(); } + +protected: + const T resolved() const { return *static_cast<const Builder*>(this); } +}; + +template<typename Builder, typename T> +struct QStringBuilderBase : public QStringBuilderCommon<Builder, T> +{ +}; + +template<typename Builder> +struct QStringBuilderBase<Builder, QString> : public QStringBuilderCommon<Builder, QString> +{ + QByteArray toLatin1() const { return this->resolved().toLatin1(); } + QByteArray toUtf8() const { return this->resolved().toUtf8(); } + QByteArray toLocal8Bit() const { return this->resolved().toLocal8Bit(); } +}; + +template <typename A, typename B> +class QStringBuilder : public QStringBuilderBase<QStringBuilder<A, B>, typename QtStringBuilder::ConvertToTypeHelper<typename QConcatenable<A>::ConvertTo, typename QConcatenable<B>::ConvertTo>::ConvertTo> +{ +public: + QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {} +private: + friend class QByteArray; + friend class QString; + template <typename T> T convertTo() const + { + const uint len = QConcatenable< QStringBuilder<A, B> >::size(*this); + T s(len, Qt::Uninitialized); + + + + typename T::iterator d = const_cast<typename T::iterator>(s.constData()); + typename T::const_iterator const start = d; + QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d); + + if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && int(len) != d - start) { + + + s.resize(d - start); + } + return s; + } + + typedef QConcatenable<QStringBuilder<A, B> > Concatenable; + typedef typename Concatenable::ConvertTo ConvertTo; +public: + operator ConvertTo() const { return convertTo<ConvertTo>(); } + + int size() const { return Concatenable::size(*this); } + + const A &a; + const B &b; +}; + +template <> +class QStringBuilder <QString, QString> : public QStringBuilderBase<QStringBuilder<QString, QString>, QString> +{ + public: + QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {} + QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {} + + operator QString() const + { QString r(a); r += b; return r; } + + const QString &a; + const QString &b; + + private: + QStringBuilder &operator=(const QStringBuilder &) = delete; +}; + +template <> +class QStringBuilder <QByteArray, QByteArray> : public QStringBuilderBase<QStringBuilder<QByteArray, QByteArray>, QByteArray> +{ + public: + QStringBuilder(const QByteArray &a_, const QByteArray &b_) : a(a_), b(b_) {} + QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {} + + operator QByteArray() const + { QByteArray r(a); r += b; return r; } + + const QByteArray &a; + const QByteArray &b; + + private: + QStringBuilder &operator=(const QStringBuilder &) = delete; +}; + + +template <> struct QConcatenable<char> : private QAbstractConcatenable +{ + typedef char type; + typedef QByteArray ConvertTo; + enum { ExactSize = true }; + static int size(const char) { return 1; } + + static inline __attribute__ ((__deprecated__)) void appendTo(const char c, QChar *&out) + { + QAbstractConcatenable::convertFromAscii(c, out); + } + + static inline void appendTo(const char c, char *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable<QLatin1Char> +{ + typedef QLatin1Char type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QLatin1Char) { return 1; } + static inline void appendTo(const QLatin1Char c, QChar *&out) + { *out++ = c; } + static inline void appendTo(const QLatin1Char c, char *&out) + { *out++ = c.toLatin1(); } +}; + +template <> struct QConcatenable<QChar> : private QAbstractConcatenable +{ + typedef QChar type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QChar) { return 1; } + static inline void appendTo(const QChar c, QChar *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable<QChar::SpecialCharacter> : private QAbstractConcatenable +{ + typedef QChar::SpecialCharacter type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QChar::SpecialCharacter) { return 1; } + static inline void appendTo(const QChar::SpecialCharacter c, QChar *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable<QCharRef> : private QAbstractConcatenable +{ + typedef QCharRef type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(QCharRef) { return 1; } + static inline void appendTo(QCharRef c, QChar *&out) + { *out++ = QChar(c); } +}; + +template <> struct QConcatenable<QLatin1String> : private QAbstractConcatenable +{ + typedef QLatin1String type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QLatin1String a) { return a.size(); } + static inline void appendTo(const QLatin1String a, QChar *&out) + { + appendLatin1To(a.latin1(), a.size(), out); + out += a.size(); + } + static inline void appendTo(const QLatin1String a, char *&out) + { + if (const char *data = a.data()) { + memcpy(out, data, a.size()); + out += a.size(); + } + } +}; + +template <> struct QConcatenable<QString> : private QAbstractConcatenable +{ + typedef QString type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QString &a) { return a.size(); } + static inline void appendTo(const QString &a, QChar *&out) + { + const int n = a.size(); + memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * n); + out += n; + } +}; + +template <> struct QConcatenable<QStringRef> : private QAbstractConcatenable +{ + typedef QStringRef type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QStringRef &a) { return a.size(); } + static inline void appendTo(const QStringRef &a, QChar *&out) + { + const int n = a.size(); + memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * n); + out += n; + } +}; + +template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable +{ + typedef char type[N]; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const char[N]) { return N - 1; } + + static inline void __attribute__ ((__deprecated__)) appendTo(const char a[N], QChar *&out) + { + QAbstractConcatenable::convertFromAscii(a, N - 1, out); + } + + static inline void appendTo(const char a[N], char *&out) + { + while (*a) + *out++ = *a++; + } +}; + +template <int N> struct QConcatenable<const char[N]> : private QAbstractConcatenable +{ + typedef const char type[N]; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const char[N]) { return N - 1; } + + static inline void __attribute__ ((__deprecated__)) appendTo(const char a[N], QChar *&out) + { + QAbstractConcatenable::convertFromAscii(a, N - 1, out); + } + + static inline void appendTo(const char a[N], char *&out) + { + while (*a) + *out++ = *a++; + } +}; + +template <> struct QConcatenable<const char *> : private QAbstractConcatenable +{ + typedef char const *type; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const char *a) { return qstrlen(a); } + + static inline void __attribute__ ((__deprecated__)) appendTo(const char *a, QChar *&out) + { QAbstractConcatenable::convertFromAscii(a, -1, out); } + + static inline void appendTo(const char *a, char *&out) + { + if (!a) + return; + while (*a) + *out++ = *a++; + } +}; + +template <> struct QConcatenable<QByteArray> : private QAbstractConcatenable +{ + typedef QByteArray type; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const QByteArray &ba) { return ba.size(); } + + static inline __attribute__ ((__deprecated__)) void appendTo(const QByteArray &ba, QChar *&out) + { + QAbstractConcatenable::convertFromAscii(ba.constData(), ba.size(), out); + } + + static inline void appendTo(const QByteArray &ba, char *&out) + { + const char *a = ba.constData(); + const char * const end = ba.end(); + while (a != end) + *out++ = *a++; + } +}; + + +template <typename A, typename B> +struct QConcatenable< QStringBuilder<A, B> > +{ + typedef QStringBuilder<A, B> type; + typedef typename QtStringBuilder::ConvertToTypeHelper<typename QConcatenable<A>::ConvertTo, typename QConcatenable<B>::ConvertTo>::ConvertTo ConvertTo; + enum { ExactSize = QConcatenable<A>::ExactSize && QConcatenable<B>::ExactSize }; + static int size(const type &p) + { + return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b); + } + template<typename T> static inline void appendTo(const type &p, T *&out) + { + QConcatenable<A>::appendTo(p.a, out); + QConcatenable<B>::appendTo(p.b, out); + } +}; + +template <typename A, typename B> +QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type> +operator%(const A &a, const B &b) +{ + return QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>(a, b); +} + + + + +template <typename A, typename B> +QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type> +operator+(const A &a, const B &b) +{ + return QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>(a, b); +} + + +namespace QtStringBuilder { +template <typename A, typename B> +QByteArray &appendToByteArray(QByteArray &a, const QStringBuilder<A, B> &b, char) +{ + + int len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); + a.reserve(len); + char *it = a.data() + a.size(); + QConcatenable< QStringBuilder<A, B> >::appendTo(b, it); + a.resize(len); + return a; +} +# 414 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringbuilder.h" +} + +template <typename A, typename B> +QByteArray &operator+=(QByteArray &a, const QStringBuilder<A, B> &b) +{ + return QtStringBuilder::appendToByteArray(a, b, + typename QConcatenable< QStringBuilder<A, B> >::ConvertTo::value_type()); +} + +template <typename A, typename B> +QString &operator+=(QString &a, const QStringBuilder<A, B> &b) +{ + int len = a.size() + QConcatenable< QStringBuilder<A, B> >::size(b); + a.reserve(len); + QChar *it = a.data() + a.size(); + QConcatenable< QStringBuilder<A, B> >::appendTo(b, it); + a.resize(int(it - a.constData())); + return a; +} + + + +# 1 "../../include/QtCore/qstringbuilder.h" 2 +# 1629 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstring.h" 2 +# 1 "../../include/QtCore/qstring.h" 2 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonvalue.h" 2 + + + +class QDebug; +class QVariant; +class QJsonArray; +class QJsonObject; + +namespace QJsonPrivate { + class Data; + class Base; + class Object; + class Header; + class Array; + class Value; + class Entry; +} + +class __attribute__((visibility("default"))) QJsonValue +{ +public: + enum Type { + Null = 0x0, + Bool = 0x1, + Double = 0x2, + String = 0x3, + Array = 0x4, + Object = 0x5, + Undefined = 0x80 + }; + + QJsonValue(Type = Null); + QJsonValue(bool b); + QJsonValue(double n); + QJsonValue(int n); + QJsonValue(qint64 n); + QJsonValue(const QString &s); + QJsonValue(QLatin1String s); + + inline __attribute__ ((__deprecated__)) QJsonValue(const char *s) + : d(0), t(String) { stringDataFromQStringHelper(QString::fromUtf8(s)); } + + QJsonValue(const QJsonArray &a); + QJsonValue(const QJsonObject &o); + + ~QJsonValue(); + + QJsonValue(const QJsonValue &other); + QJsonValue &operator =(const QJsonValue &other); + + static QJsonValue fromVariant(const QVariant &variant); + QVariant toVariant() const; + + Type type() const; + inline bool isNull() const { return type() == Null; } + inline bool isBool() const { return type() == Bool; } + inline bool isDouble() const { return type() == Double; } + inline bool isString() const { return type() == String; } + inline bool isArray() const { return type() == Array; } + inline bool isObject() const { return type() == Object; } + inline bool isUndefined() const { return type() == Undefined; } + + bool toBool(bool defaultValue = false) const; + int toInt(int defaultValue = 0) const; + double toDouble(double defaultValue = 0) const; + QString toString(const QString &defaultValue = QString()) const; + QJsonArray toArray() const; + QJsonArray toArray(const QJsonArray &defaultValue) const; + QJsonObject toObject() const; + QJsonObject toObject(const QJsonObject &defaultValue) const; + + bool operator==(const QJsonValue &other) const; + bool operator!=(const QJsonValue &other) const; + +private: + + inline QJsonValue(const void *) {} + friend class QJsonPrivate::Value; + friend class QJsonArray; + friend class QJsonObject; + friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonValue &); + + QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v); + void stringDataFromQStringHelper(const QString &string); + + void detach(); + + union { + quint64 ui; + bool b; + double dbl; + QStringData *stringData; + QJsonPrivate::Base *base; + }; + QJsonPrivate::Data *d; + Type t; +}; + +class __attribute__((visibility("default"))) QJsonValueRef +{ +public: + QJsonValueRef(QJsonArray *array, int idx) + : a(array), is_object(false), index(idx) {} + QJsonValueRef(QJsonObject *object, int idx) + : o(object), is_object(true), index(idx) {} + + inline operator QJsonValue() const { return toValue(); } + QJsonValueRef &operator = (const QJsonValue &val); + QJsonValueRef &operator = (const QJsonValueRef &val); + + QVariant toVariant() const; + inline QJsonValue::Type type() const { return toValue().type(); } + inline bool isNull() const { return type() == QJsonValue::Null; } + inline bool isBool() const { return type() == QJsonValue::Bool; } + inline bool isDouble() const { return type() == QJsonValue::Double; } + inline bool isString() const { return type() == QJsonValue::String; } + inline bool isArray() const { return type() == QJsonValue::Array; } + inline bool isObject() const { return type() == QJsonValue::Object; } + inline bool isUndefined() const { return type() == QJsonValue::Undefined; } + + inline bool toBool() const { return toValue().toBool(); } + inline int toInt() const { return toValue().toInt(); } + inline double toDouble() const { return toValue().toDouble(); } + inline QString toString() const { return toValue().toString(); } + QJsonArray toArray() const; + QJsonObject toObject() const; + + + inline bool toBool(bool defaultValue) const { return toValue().toBool(defaultValue); } + inline int toInt(int defaultValue) const { return toValue().toInt(defaultValue); } + inline double toDouble(double defaultValue) const { return toValue().toDouble(defaultValue); } + inline QString toString(const QString &defaultValue) const { return toValue().toString(defaultValue); } + + inline bool operator==(const QJsonValue &other) const { return toValue() == other; } + inline bool operator!=(const QJsonValue &other) const { return toValue() != other; } + +private: + QJsonValue toValue() const; + + union { + QJsonArray *a; + QJsonObject *o; + }; + uint is_object : 1; + uint index : 31; +}; + + + +class QJsonValuePtr +{ + QJsonValue value; +public: + explicit QJsonValuePtr(const QJsonValue& val) + : value(val) {} + + QJsonValue& operator*() { return value; } + QJsonValue* operator->() { return &value; } +}; + +class QJsonValueRefPtr +{ + QJsonValueRef valueRef; +public: + QJsonValueRefPtr(QJsonArray *array, int idx) + : valueRef(array, idx) {} + QJsonValueRefPtr(QJsonObject *object, int idx) + : valueRef(object, idx) {} + + QJsonValueRef& operator*() { return valueRef; } + QJsonValueRef* operator->() { return &valueRef; } +}; + + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonValue &); + + + +# 1 "../../include/QtCore/qjsonvalue.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonobject.h" 2 +# 1 "../../include/QtCore/qiterator.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qiterator.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qiterator.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qiterator.h" 2 + + +# 182 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qiterator.h" + +# 1 "../../include/QtCore/qiterator.h" 2 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonobject.h" 2 + +# 1 "../../include/QtCore/qpair.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qpair.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qpair.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qpair.h" 2 + + + + +template <class T1, class T2> +struct QPair +{ + typedef T1 first_type; + typedef T2 second_type; + + constexpr QPair() + noexcept((std::is_nothrow_default_constructible<T1>::value && std::is_nothrow_default_constructible<T2>::value)) + + : first(), second() {} + constexpr QPair(const T1 &t1, const T2 &t2) + noexcept((std::is_nothrow_copy_constructible<T1>::value && std::is_nothrow_copy_constructible<T2>::value)) + + : first(t1), second(t2) {} + + + template <typename TT1, typename TT2> + constexpr QPair(const QPair<TT1, TT2> &p) + noexcept((std::is_nothrow_constructible<T1, TT1&>::value && std::is_nothrow_constructible<T2, TT2&>::value)) + + : first(p.first), second(p.second) {} + template <typename TT1, typename TT2> + constexpr QPair &operator=(const QPair<TT1, TT2> &p) + noexcept((std::is_nothrow_assignable<T1, TT1&>::value && std::is_nothrow_assignable<T2, TT2&>::value)) + + { first = p.first; second = p.second; return *this; } + + template <typename TT1, typename TT2> + constexpr QPair(QPair<TT1, TT2> &&p) + noexcept((std::is_nothrow_constructible<T1, TT1>::value && std::is_nothrow_constructible<T2, TT2>::value)) + + + : first(static_cast<TT1 &&>(p.first)), second(static_cast<TT2 &&>(p.second)) {} + template <typename TT1, typename TT2> + constexpr QPair &operator=(QPair<TT1, TT2> &&p) + noexcept((std::is_nothrow_assignable<T1, TT1>::value && std::is_nothrow_assignable<T2, TT2>::value)) + + { first = std::move(p.first); second = std::move(p.second); return *this; } + + + constexpr void swap(QPair &other) + noexcept(noexcept(qSwap(other.first, other.first)) && noexcept(qSwap(other.second, other.second))) + { + + qSwap(first, other.first); + qSwap(second, other.second); + } + + T1 first; + T2 second; +}; + +template <typename T1, typename T2> +void swap(QPair<T1, T2> &lhs, QPair<T1, T2> &rhs) noexcept(noexcept(lhs.swap(rhs))) +{ lhs.swap(rhs); } + + + +template<class T1, class T2> +class QTypeInfo<QPair<T1, T2> > : public QTypeInfoMerger<QPair<T1, T2>, T1, T2> {}; + +template <class T1, class T2> +constexpr inline bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(p1.first == p2.first && p1.second == p2.second)) +{ return p1.first == p2.first && p1.second == p2.second; } + +template <class T1, class T2> +constexpr inline bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(!(p1 == p2))) +{ return !(p1 == p2); } + +template <class T1, class T2> +constexpr inline bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second))) +{ + return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second); +} + +template <class T1, class T2> +constexpr inline bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(p2 < p1)) +{ + return p2 < p1; +} + +template <class T1, class T2> +constexpr inline bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(!(p2 < p1))) +{ + return !(p2 < p1); +} + +template <class T1, class T2> +constexpr inline bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + noexcept(noexcept(!(p1 < p2))) +{ + return !(p1 < p2); +} + +template <class T1, class T2> +constexpr QPair<T1, T2> qMakePair(const T1 &x, const T2 &y) + noexcept(noexcept(QPair<T1, T2>(x, y))) +{ + return QPair<T1, T2>(x, y); +} + + +# 1 "../../include/QtCore/qpair.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonobject.h" 2 + + + + + +class QDebug; +template <class Key, class T> class QMap; +typedef QMap<QString, QVariant> QVariantMap; +template <class Key, class T> class QHash; +typedef QHash<QString, QVariant> QVariantHash; + +class __attribute__((visibility("default"))) QJsonObject +{ +public: + QJsonObject(); + + + QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args) + { + initialize(); + for (std::initializer_list<QPair<QString, QJsonValue> >::const_iterator i = args.begin(); i != args.end(); ++i) + insert(i->first, i->second); + } + + + ~QJsonObject(); + + QJsonObject(const QJsonObject &other); + QJsonObject &operator =(const QJsonObject &other); + + static QJsonObject fromVariantMap(const QVariantMap &map); + QVariantMap toVariantMap() const; + static QJsonObject fromVariantHash(const QVariantHash &map); + QVariantHash toVariantHash() const; + + QStringList keys() const; + int size() const; + inline int count() const { return size(); } + inline int length() const { return size(); } + bool isEmpty() const; + + QJsonValue value(const QString &key) const; + QJsonValue operator[] (const QString &key) const; + QJsonValueRef operator[] (const QString &key); + + void remove(const QString &key); + QJsonValue take(const QString &key); + bool contains(const QString &key) const; + + bool operator==(const QJsonObject &other) const; + bool operator!=(const QJsonObject &other) const; + + class const_iterator; + + class iterator + { + friend class const_iterator; + friend class QJsonObject; + QJsonObject *o; + int i; + + public: + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValueRef reference; + typedef QJsonValuePtr pointer; + + constexpr inline iterator() : o(nullptr), i(0) {} + constexpr inline iterator(QJsonObject *obj, int index) : o(obj), i(index) {} + + inline QString key() const { return o->keyAt(i); } + inline QJsonValueRef value() const { return QJsonValueRef(o, i); } + inline QJsonValueRef operator*() const { return QJsonValueRef(o, i); } + + + + inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); } + + inline bool operator==(const iterator &other) const { return i == other.i; } + inline bool operator!=(const iterator &other) const { return i != other.i; } + + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator r = *this; ++i; return r; } + inline iterator &operator--() { --i; return *this; } + inline iterator operator--(int) { iterator r = *this; --i; return r; } + inline iterator operator+(int j) const + { iterator r = *this; r.i += j; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { i += j; return *this; } + inline iterator &operator-=(int j) { i -= j; return *this; } + + public: + inline bool operator==(const const_iterator &other) const { return i == other.i; } + inline bool operator!=(const const_iterator &other) const { return i != other.i; } + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + const QJsonObject *o; + int i; + + public: + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValue reference; + typedef QJsonValuePtr pointer; + + constexpr inline const_iterator() : o(nullptr), i(0) {} + constexpr inline const_iterator(const QJsonObject *obj, int index) + : o(obj), i(index) {} + inline const_iterator(const iterator &other) + : o(other.o), i(other.i) {} + + inline QString key() const { return o->keyAt(i); } + inline QJsonValue value() const { return o->valueAt(i); } + inline QJsonValue operator*() const { return o->valueAt(i); } + + + + inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); } + + inline bool operator==(const const_iterator &other) const { return i == other.i; } + inline bool operator!=(const const_iterator &other) const { return i != other.i; } + + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; } + inline const_iterator &operator--() { --i; return *this; } + inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; } + inline const_iterator operator+(int j) const + { const_iterator r = *this; r.i += j; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { i += j; return *this; } + inline const_iterator &operator-=(int j) { i -= j; return *this; } + + inline bool operator==(const iterator &other) const { return i == other.i; } + inline bool operator!=(const iterator &other) const { return i != other.i; } + }; + friend class const_iterator; + + + inline iterator begin() { detach2(); return iterator(this, 0); } + inline const_iterator begin() const { return const_iterator(this, 0); } + inline const_iterator constBegin() const { return const_iterator(this, 0); } + inline iterator end() { detach2(); return iterator(this, size()); } + inline const_iterator end() const { return const_iterator(this, size()); } + inline const_iterator constEnd() const { return const_iterator(this, size()); } + iterator erase(iterator it); + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + iterator find(const QString &key); + const_iterator find(const QString &key) const { return constFind(key); } + const_iterator constFind(const QString &key) const; + iterator insert(const QString &key, const QJsonValue &value); + + + typedef QJsonValue mapped_type; + typedef QString key_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + +private: + friend class QJsonPrivate::Data; + friend class QJsonValue; + friend class QJsonDocument; + friend class QJsonValueRef; + + friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonObject &); + + QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object); + void initialize(); + + void detach(uint reserve = 0); + bool detach2(uint reserve = 0); + void compact(); + + QString keyAt(int i) const; + QJsonValue valueAt(int i) const; + void setValueAt(int i, const QJsonValue &val); + + QJsonPrivate::Data *d; + QJsonPrivate::Object *o; +}; + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonObject &); + + + +# 1 "../../include/QtCore/qjsonobject.h" 2 +# 41 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 +# 1 "../../include/QtCore/qjsonvalue.h" 1 +# 42 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 +# 1 "../../include/QtCore/qjsonarray.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonarray.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonarray.h" +# 1 "../../include/QtCore/qjsonvalue.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonarray.h" 2 +# 1 "../../include/QtCore/qiterator.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsonarray.h" 2 + + + + + + +class QDebug; +class QStringList; +template <typename T> class QList; +typedef QList<QVariant> QVariantList; + +class __attribute__((visibility("default"))) QJsonArray +{ +public: + QJsonArray(); + + + QJsonArray(std::initializer_list<QJsonValue> args) + { + initialize(); + for (std::initializer_list<QJsonValue>::const_iterator i = args.begin(); i != args.end(); ++i) + append(*i); + } + + + ~QJsonArray(); + + QJsonArray(const QJsonArray &other); + QJsonArray &operator =(const QJsonArray &other); + + static QJsonArray fromStringList(const QStringList &list); + static QJsonArray fromVariantList(const QVariantList &list); + QVariantList toVariantList() const; + + int size() const; + inline int count() const { return size(); } + + bool isEmpty() const; + QJsonValue at(int i) const; + QJsonValue first() const; + QJsonValue last() const; + + void prepend(const QJsonValue &value); + void append(const QJsonValue &value); + void removeAt(int i); + QJsonValue takeAt(int i); + inline void removeFirst() { removeAt(0); } + inline void removeLast() { removeAt(size() - 1); } + + void insert(int i, const QJsonValue &value); + void replace(int i, const QJsonValue &value); + + bool contains(const QJsonValue &element) const; + QJsonValueRef operator[](int i); + QJsonValue operator[](int i) const; + + bool operator==(const QJsonArray &other) const; + bool operator!=(const QJsonArray &other) const; + + class const_iterator; + + class iterator { + public: + QJsonArray *a; + int i; + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValueRef reference; + typedef QJsonValueRefPtr pointer; + + inline iterator() : a(nullptr), i(0) { } + explicit inline iterator(QJsonArray *array, int index) : a(array), i(index) { } + + inline QJsonValueRef operator*() const { return QJsonValueRef(a, i); } + + + + inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(a, i); } + + inline QJsonValueRef operator[](int j) const { return QJsonValueRef(a, i + j); } + + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator<(const iterator& other) const { return i < other.i; } + inline bool operator<=(const iterator& other) const { return i <= other.i; } + inline bool operator>(const iterator& other) const { return i > other.i; } + inline bool operator>=(const iterator& other) const { return i >= other.i; } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline bool operator<(const const_iterator& other) const { return i < other.i; } + inline bool operator<=(const const_iterator& other) const { return i <= other.i; } + inline bool operator>(const const_iterator& other) const { return i > other.i; } + inline bool operator>=(const const_iterator& other) const { return i >= other.i; } + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator n = *this; ++i; return n; } + inline iterator &operator--() { i--; return *this; } + inline iterator operator--(int) { iterator n = *this; i--; return n; } + inline iterator &operator+=(int j) { i+=j; return *this; } + inline iterator &operator-=(int j) { i-=j; return *this; } + inline iterator operator+(int j) const { return iterator(a, i+j); } + inline iterator operator-(int j) const { return iterator(a, i-j); } + inline int operator-(iterator j) const { return i - j.i; } + }; + friend class iterator; + + class const_iterator { + public: + const QJsonArray *a; + int i; + typedef std::random_access_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef QJsonValue value_type; + typedef QJsonValue reference; + typedef QJsonValuePtr pointer; + + inline const_iterator() : a(nullptr), i(0) { } + explicit inline const_iterator(const QJsonArray *array, int index) : a(array), i(index) { } + + inline const_iterator(const const_iterator &o) : a(o.a), i(o.i) {} + + inline const_iterator(const iterator &o) : a(o.a), i(o.i) {} + + inline QJsonValue operator*() const { return a->at(i); } + + + + inline QJsonValuePtr operator->() const { return QJsonValuePtr(a->at(i)); } + + inline QJsonValue operator[](int j) const { return a->at(i+j); } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline bool operator<(const const_iterator& other) const { return i < other.i; } + inline bool operator<=(const const_iterator& other) const { return i <= other.i; } + inline bool operator>(const const_iterator& other) const { return i > other.i; } + inline bool operator>=(const const_iterator& other) const { return i >= other.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator n = *this; ++i; return n; } + inline const_iterator &operator--() { i--; return *this; } + inline const_iterator operator--(int) { const_iterator n = *this; i--; return n; } + inline const_iterator &operator+=(int j) { i+=j; return *this; } + inline const_iterator &operator-=(int j) { i-=j; return *this; } + inline const_iterator operator+(int j) const { return const_iterator(a, i+j); } + inline const_iterator operator-(int j) const { return const_iterator(a, i-j); } + inline int operator-(const_iterator j) const { return i - j.i; } + }; + friend class const_iterator; + + + inline iterator begin() { detach2(); return iterator(this, 0); } + inline const_iterator begin() const { return const_iterator(this, 0); } + inline const_iterator constBegin() const { return const_iterator(this, 0); } + inline iterator end() { detach2(); return iterator(this, size()); } + inline const_iterator end() const { return const_iterator(this, size()); } + inline const_iterator constEnd() const { return const_iterator(this, size()); } + iterator insert(iterator before, const QJsonValue &value) { insert(before.i, value); return before; } + iterator erase(iterator it) { removeAt(it.i); return it; } + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + + + inline QJsonArray operator+(const QJsonValue &v) const + { QJsonArray n = *this; n += v; return n; } + inline QJsonArray &operator+=(const QJsonValue &v) + { append(v); return *this; } + inline QJsonArray &operator<< (const QJsonValue &v) + { append(v); return *this; } + + + inline void push_back(const QJsonValue &t) { append(t); } + inline void push_front(const QJsonValue &t) { prepend(t); } + inline void pop_front() { removeFirst(); } + inline void pop_back() { removeLast(); } + inline bool empty() const { return isEmpty(); } + typedef int size_type; + typedef QJsonValue value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef QJsonValueRef reference; + typedef QJsonValue const_reference; + typedef int difference_type; + +private: + friend class QJsonPrivate::Data; + friend class QJsonValue; + friend class QJsonDocument; + friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonArray &); + + QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array); + void initialize(); + void compact(); + + void detach(uint reserve = 0); + bool detach2(uint reserve = 0); + + QJsonPrivate::Data *d; + QJsonPrivate::Array *a; +}; + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonArray &); + + + +# 1 "../../include/QtCore/qjsonarray.h" 2 +# 43 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 +# 1 "../../include/QtCore/qvariant.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" +# 1 "../../include/QtCore/qalgorithms.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" 2 + + + +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +#pragma GCC diagnostic push +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" + + +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" + + + + + + + +namespace QAlgorithmsPrivate { + + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::sort"))) void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::sort"))) inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy); + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::stable_sort"))) void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::stable_sort"))) inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &); + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::lower_bound"))) RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::upper_bound"))) RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::binary_search"))) RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); + + +} + + +template <typename InputIterator, typename OutputIterator> +__attribute__ ((__deprecated__("Use std::copy"))) inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) +{ + while (begin != end) + *dest++ = *begin++; + return dest; +} + +template <typename BiIterator1, typename BiIterator2> +__attribute__ ((__deprecated__("Use std::copy_backward"))) inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) +{ + while (begin != end) + *--dest = *--end; + return dest; +} + +template <typename InputIterator1, typename InputIterator2> +__attribute__ ((__deprecated__("Use std::equal"))) inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) +{ + for (; first1 != last1; ++first1, ++first2) + if (!(*first1 == *first2)) + return false; + return true; +} + +template <typename ForwardIterator, typename T> +__attribute__ ((__deprecated__("Use std::fill"))) inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) +{ + for (; first != last; ++first) + *first = val; +} + +template <typename Container, typename T> +__attribute__ ((__deprecated__("Use std::fill"))) inline void qFill(Container &container, const T &val) +{ + qFill(container.begin(), container.end(), val); +} + +template <typename InputIterator, typename T> +__attribute__ ((__deprecated__("Use std::find"))) inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) +{ + while (first != last && !(*first == val)) + ++first; + return first; +} + +template <typename Container, typename T> +__attribute__ ((__deprecated__("Use std::find"))) inline typename Container::const_iterator qFind(const Container &container, const T &val) +{ + return qFind(container.constBegin(), container.constEnd(), val); +} + +template <typename InputIterator, typename T, typename Size> +__attribute__ ((__deprecated__("Use std::count"))) inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) +{ + for (; first != last; ++first) + if (*first == value) + ++n; +} + +template <typename Container, typename T, typename Size> +__attribute__ ((__deprecated__("Use std::count"))) inline void qCount(const Container &container, const T &value, Size &n) +{ + qCount(container.constBegin(), container.constEnd(), value, n); +} +# 155 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +template <typename T> +class __attribute__ ((__deprecated__("Use std::less"))) qLess +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t1 < t2); + } +}; + +template <typename T> +class __attribute__ ((__deprecated__("Use std::greater"))) qGreater +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t2 < t1); + } +}; + + +template <typename RandomAccessIterator> +__attribute__ ((__deprecated__("Use std::sort"))) inline void qSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start); +} + +template <typename RandomAccessIterator, typename LessThan> +__attribute__ ((__deprecated__("Use std::sort"))) inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); +} + +template<typename Container> +__attribute__ ((__deprecated__("Use std::sort"))) inline void qSort(Container &c) +{ + + + + + if (!c.empty()) + QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); +} + +template <typename RandomAccessIterator> +__attribute__ ((__deprecated__("Use std::stable_sort"))) inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start); +} + +template <typename RandomAccessIterator, typename LessThan> +__attribute__ ((__deprecated__("Use std::stable_sort"))) inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); +} + +template<typename Container> +__attribute__ ((__deprecated__("Use std::stable_sort"))) inline void qStableSort(Container &c) +{ + + + + + if (!c.empty()) + QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); +} + +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::lower_bound"))) RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + + + + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (*middle < value) { + begin = middle + 1; + n -= half + 1; + } else { + n = half; + } + } + return begin; +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::lower_bound"))) RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan); +} + +template <typename Container, typename T> +__attribute__ ((__deprecated__("Use std::lower_bound"))) typename Container::const_iterator qLowerBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>()); +} + +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::upper_bound"))) RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (value < *middle) { + n = half; + } else { + begin = middle + 1; + n -= half + 1; + } + } + return begin; +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::upper_bound"))) RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan); +} + +template <typename Container, typename T> +__attribute__ ((__deprecated__("Use std::upper_bound"))) typename Container::const_iterator qUpperBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>()); +} + +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::binary_search"))) RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + + RandomAccessIterator it = qLowerBound(begin, end, value); + + if (it == end || value < *it) + return end; + + return it; +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::binary_search"))) RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan); +} + +template <typename Container, typename T> +__attribute__ ((__deprecated__("Use std::binary_search"))) typename Container::const_iterator qBinaryFind(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess<T>()); +} + + +template <typename ForwardIterator> + void qDeleteAll(ForwardIterator begin, ForwardIterator end) +{ + while (begin != end) { + delete *begin; + ++begin; + } +} + +template <typename Container> +inline void qDeleteAll(const Container &c) +{ + qDeleteAll(c.begin(), c.end()); +} + + + + + +namespace QAlgorithmsPrivate { + + + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::sort"))) void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan) +{ +top: + int span = int(end - start); + if (span < 2) + return; + + --end; + RandomAccessIterator low = start, high = end - 1; + RandomAccessIterator pivot = start + span / 2; + + if (lessThan(*end, *start)) + qSwap(*end, *start); + if (span == 2) + return; + + if (lessThan(*pivot, *start)) + qSwap(*pivot, *start); + if (lessThan(*end, *pivot)) + qSwap(*end, *pivot); + if (span == 3) + return; + + qSwap(*pivot, *end); + + while (low < high) { + while (low < high && lessThan(*low, *end)) + ++low; + + while (high > low && lessThan(*end, *high)) + --high; + + if (low < high) { + qSwap(*low, *high); + ++low; + --high; + } else { + break; + } + } + + if (lessThan(*low, *end)) + ++low; + + qSwap(*end, *low); + qSortHelper(start, low, t, lessThan); + + start = low + 1; + ++end; + goto top; +} + +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::sort"))) inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qSortHelper(begin, end, dummy, qLess<T>()); +} + +template <typename RandomAccessIterator> +__attribute__ ((__deprecated__("Use std::reverse"))) void qReverse(RandomAccessIterator begin, RandomAccessIterator end) +{ + --end; + while (begin < end) + qSwap(*begin++, *end--); +} + +template <typename RandomAccessIterator> +__attribute__ ((__deprecated__("Use std::rotate"))) void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end) +{ + qReverse(begin, middle); + qReverse(middle, end); + qReverse(begin, end); +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::merge"))) void qMerge(RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan) +{ + const int len1 = pivot - begin; + const int len2 = end - pivot; + + if (len1 == 0 || len2 == 0) + return; + + if (len1 + len2 == 2) { + if (lessThan(*(begin + 1), *(begin))) + qSwap(*begin, *(begin + 1)); + return; + } + + RandomAccessIterator firstCut; + RandomAccessIterator secondCut; + int len2Half; + if (len1 > len2) { + const int len1Half = len1 / 2; + firstCut = begin + len1Half; + secondCut = qLowerBound(pivot, end, *firstCut, lessThan); + len2Half = secondCut - pivot; + } else { + len2Half = len2 / 2; + secondCut = pivot + len2Half; + firstCut = qUpperBound(begin, pivot, *secondCut, lessThan); + } + + qRotate(firstCut, pivot, secondCut); + const RandomAccessIterator newPivot = firstCut + len2Half; + qMerge(begin, firstCut, newPivot, t, lessThan); + qMerge(newPivot, secondCut, end, t, lessThan); +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::stable_sort"))) void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &t, LessThan lessThan) +{ + const int span = end - begin; + if (span < 2) + return; + + const RandomAccessIterator middle = begin + span / 2; + qStableSortHelper(begin, middle, t, lessThan); + qStableSortHelper(middle, end, t, lessThan); + qMerge(begin, middle, end, t, lessThan); +} + +template <typename RandomAccessIterator, typename T> +__attribute__ ((__deprecated__("Use std::stable_sort"))) inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qStableSortHelper(begin, end, dummy, qLess<T>()); +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::lower_bound"))) RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator middle; + int n = int(end - begin); + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (lessThan(*middle, value)) { + begin = middle + 1; + n -= half + 1; + } else { + n = half; + } + } + return begin; +} + + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::upper_bound"))) RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (lessThan(value, *middle)) { + n = half; + } else { + begin = middle + 1; + n -= half + 1; + } + } + return begin; +} + +template <typename RandomAccessIterator, typename T, typename LessThan> +__attribute__ ((__deprecated__("Use std::binary_search"))) RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator it = qLowerBoundHelper(begin, end, value, lessThan); + + if (it == end || lessThan(value, *it)) + return end; + + return it; +} + + + +} +# 535 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +__attribute__((const)) constexpr inline uint qPopulationCount(quint32 v) noexcept +{ + + return __builtin_popcount(v); + + + + + + + +} + +__attribute__((const)) constexpr inline uint qPopulationCount(quint8 v) noexcept +{ + + return __builtin_popcount(v); + + + + +} + +__attribute__((const)) constexpr inline uint qPopulationCount(quint16 v) noexcept +{ + + return __builtin_popcount(v); + + + + + +} + +__attribute__((const)) constexpr inline uint qPopulationCount(quint64 v) noexcept +{ + + return __builtin_popcountll(v); +# 582 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +__attribute__((const)) constexpr inline uint qPopulationCount(long unsigned int v) noexcept +{ + return qPopulationCount(static_cast<quint64>(v)); +} + + + + + +constexpr inline uint qCountTrailingZeroBits(quint32 v) noexcept +{ + + return v ? __builtin_ctz(v) : 32U; +# 609 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountTrailingZeroBits(quint8 v) noexcept +{ + + return v ? __builtin_ctz(v) : 8U; +# 624 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountTrailingZeroBits(quint16 v) noexcept +{ + + + + + return v ? __builtin_ctz(v) : 16U; +# 644 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountTrailingZeroBits(quint64 v) noexcept +{ + + return v ? __builtin_ctzll(v) : 64; + + + + + +} + +constexpr inline uint qCountTrailingZeroBits(unsigned long v) noexcept +{ + return qCountTrailingZeroBits(QIntegerForSizeof<long>::Unsigned(v)); +} + +constexpr inline uint qCountLeadingZeroBits(quint32 v) noexcept +{ + + return v ? __builtin_clz(v) : 32U; +# 675 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountLeadingZeroBits(quint8 v) noexcept +{ + + return v ? __builtin_clz(v)-24U : 8U; + + + + + + +} + +constexpr inline uint qCountLeadingZeroBits(quint16 v) noexcept +{ + + + + + return v ? __builtin_clz(v)-16U : 16U; +# 704 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountLeadingZeroBits(quint64 v) noexcept +{ + + return v ? __builtin_clzll(v) : 64U; +# 719 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +} + +constexpr inline uint qCountLeadingZeroBits(unsigned long v) noexcept +{ + return qCountLeadingZeroBits(QIntegerForSizeof<long>::Unsigned(v)); +} + + +# 726 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" +#pragma GCC diagnostic pop +# 726 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qalgorithms.h" + + +# 1 "../../include/QtCore/qalgorithms.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qiterator.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qrefcount.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qarraydata.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qhashfunctions.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhashfunctions.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhashfunctions.h" +# 1 "../../include/QtCore/qchar.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhashfunctions.h" 2 +# 1 "../../include/QtCore/qpair.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhashfunctions.h" 2 +# 59 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhashfunctions.h" + + +class QBitArray; +class QByteArray; +class QString; +class QStringRef; +class QLatin1String; + +__attribute__((visibility("default"))) __attribute__((pure)) uint qHashBits(const void *p, size_t size, uint seed = 0) noexcept; + +__attribute__((const)) constexpr inline uint qHash(char key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(uchar key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(signed char key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(ushort key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(short key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(uint key, uint seed = 0) noexcept { return key ^ seed; } +__attribute__((const)) constexpr inline uint qHash(int key, uint seed = 0) noexcept { return uint(key) ^ seed; } +__attribute__((const)) constexpr inline uint qHash(ulong key, uint seed = 0) noexcept +{ + return (sizeof(ulong) > sizeof(uint)) + ? (uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed) + : (uint(key & (~0U)) ^ seed); +} +__attribute__((const)) constexpr inline uint qHash(long key, uint seed = 0) noexcept { return qHash(ulong(key), seed); } +__attribute__((const)) constexpr inline uint qHash(quint64 key, uint seed = 0) noexcept +{ + return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed; +} +__attribute__((const)) constexpr inline uint qHash(qint64 key, uint seed = 0) noexcept { return qHash(quint64(key), seed); } +__attribute__((visibility("default"))) __attribute__((const)) uint qHash(float key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((const)) uint qHash(double key, uint seed = 0) noexcept; + +__attribute__((visibility("default"))) __attribute__((const)) uint qHash(long double key, uint seed = 0) noexcept; + +__attribute__((const)) constexpr inline uint qHash(const QChar key, uint seed = 0) noexcept { return qHash(key.unicode(), seed); } +__attribute__((visibility("default"))) __attribute__((pure)) uint qHash(const QByteArray &key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qHash(const QString &key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qHash(const QStringRef &key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qHash(const QBitArray &key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qHash(QLatin1String key, uint seed = 0) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qt_hash(const QString &key) noexcept; +__attribute__((visibility("default"))) __attribute__((pure)) uint qt_hash(const QStringRef &key) noexcept; + +template <class T> inline uint qHash(const T *key, uint seed = 0) noexcept +{ + return qHash(reinterpret_cast<quintptr>(key), seed); +} +template<typename T> inline uint qHash(const T &t, uint seed) + noexcept(noexcept(qHash(t))) +{ return qHash(t) ^ seed; } + +namespace QtPrivate { + +struct QHashCombine { + typedef uint result_type; + template <typename T> + constexpr result_type operator()(uint seed, const T &t) const noexcept(noexcept(qHash(t))) + + { return seed ^ (qHash(t) + 0x9e3779b9 + (seed << 6) + (seed >> 2)) ; } +}; + +struct QHashCombineCommutative { + + + + + + typedef uint result_type; + template <typename T> + constexpr result_type operator()(uint seed, const T &t) const noexcept(noexcept(qHash(t))) + { return seed + qHash(t); } +}; + +} + +template <typename InputIterator> +inline uint qHashRange(InputIterator first, InputIterator last, uint seed = 0) + noexcept(noexcept(qHash(*first))) +{ + return std::accumulate(first, last, seed, QtPrivate::QHashCombine()); +} + +template <typename InputIterator> +inline uint qHashRangeCommutative(InputIterator first, InputIterator last, uint seed = 0) + noexcept(noexcept(qHash(*first))) +{ + return std::accumulate(first, last, seed, QtPrivate::QHashCombineCommutative()); +} + +template <typename T1, typename T2> inline uint qHash(const QPair<T1, T2> &key, uint seed = 0) + noexcept(noexcept(qHash(key.first, seed)) && noexcept(qHash(key.second, seed))) +{ + uint h1 = qHash(key.first, seed); + uint h2 = qHash(key.second, seed); + return ((h1 << 16) | (h1 >> 16)) ^ h2 ^ seed; +} + +template <typename T1, typename T2> inline uint qHash(const std::pair<T1, T2> &key, uint seed = 0) + noexcept(noexcept(qHash(key.first, seed)) && noexcept(qHash(key.second, seed))) +{ + QtPrivate::QHashCombine hash; + seed = hash(seed, key.first); + seed = hash(seed, key.second); + return seed; +} + + +# 1 "../../include/QtCore/qhashfunctions.h" 2 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/list" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/list" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/list" 3 + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 1 3 +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + namespace __detail + { + +# 77 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + struct _List_node_base + { + _List_node_base* _M_next; + _List_node_base* _M_prev; + + static void + swap(_List_node_base& __x, _List_node_base& __y) noexcept; + + void + _M_transfer(_List_node_base* const __first, + _List_node_base* const __last) noexcept; + + void + _M_reverse() noexcept; + + void + _M_hook(_List_node_base* const __position) noexcept; + + void + _M_unhook() noexcept; + }; + + + } + + + + + template<typename _Tp> + struct _List_node : public __detail::_List_node_base + { + + _Tp _M_data; + + + template<typename... _Args> + _List_node(_Args&&... __args) + : __detail::_List_node_base(), _M_data(std::forward<_Args>(__args)...) + { } + + }; + + + + + + + template<typename _Tp> + struct _List_iterator + { + typedef _List_iterator<_Tp> _Self; + typedef _List_node<_Tp> _Node; + + typedef ptrdiff_t difference_type; + typedef std::bidirectional_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + + _List_iterator() noexcept + : _M_node() { } + + explicit + _List_iterator(__detail::_List_node_base* __x) noexcept + : _M_node(__x) { } + + _Self + _M_const_cast() const noexcept + { return *this; } + + + reference + operator*() const noexcept + { return static_cast<_Node*>(_M_node)->_M_data; } + + pointer + operator->() const noexcept + { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); } + + _Self& + operator++() noexcept + { + _M_node = _M_node->_M_next; + return *this; + } + + _Self + operator++(int) noexcept + { + _Self __tmp = *this; + _M_node = _M_node->_M_next; + return __tmp; + } + + _Self& + operator--() noexcept + { + _M_node = _M_node->_M_prev; + return *this; + } + + _Self + operator--(int) noexcept + { + _Self __tmp = *this; + _M_node = _M_node->_M_prev; + return __tmp; + } + + bool + operator==(const _Self& __x) const noexcept + { return _M_node == __x._M_node; } + + bool + operator!=(const _Self& __x) const noexcept + { return _M_node != __x._M_node; } + + + __detail::_List_node_base* _M_node; + }; + + + + + + + template<typename _Tp> + struct _List_const_iterator + { + typedef _List_const_iterator<_Tp> _Self; + typedef const _List_node<_Tp> _Node; + typedef _List_iterator<_Tp> iterator; + + typedef ptrdiff_t difference_type; + typedef std::bidirectional_iterator_tag iterator_category; + typedef _Tp value_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + + _List_const_iterator() noexcept + : _M_node() { } + + explicit + _List_const_iterator(const __detail::_List_node_base* __x) + noexcept + : _M_node(__x) { } + + _List_const_iterator(const iterator& __x) noexcept + : _M_node(__x._M_node) { } + + iterator + _M_const_cast() const noexcept + { return iterator(const_cast<__detail::_List_node_base*>(_M_node)); } + + + + reference + operator*() const noexcept + { return static_cast<_Node*>(_M_node)->_M_data; } + + pointer + operator->() const noexcept + { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); } + + _Self& + operator++() noexcept + { + _M_node = _M_node->_M_next; + return *this; + } + + _Self + operator++(int) noexcept + { + _Self __tmp = *this; + _M_node = _M_node->_M_next; + return __tmp; + } + + _Self& + operator--() noexcept + { + _M_node = _M_node->_M_prev; + return *this; + } + + _Self + operator--(int) noexcept + { + _Self __tmp = *this; + _M_node = _M_node->_M_prev; + return __tmp; + } + + bool + operator==(const _Self& __x) const noexcept + { return _M_node == __x._M_node; } + + bool + operator!=(const _Self& __x) const noexcept + { return _M_node != __x._M_node; } + + + const __detail::_List_node_base* _M_node; + }; + + template<typename _Val> + inline bool + operator==(const _List_iterator<_Val>& __x, + const _List_const_iterator<_Val>& __y) noexcept + { return __x._M_node == __y._M_node; } + + template<typename _Val> + inline bool + operator!=(const _List_iterator<_Val>& __x, + const _List_const_iterator<_Val>& __y) noexcept + { return __x._M_node != __y._M_node; } + +namespace __cxx11 { + + template<typename _Tp, typename _Alloc> + class _List_base + { + protected: +# 314 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + typedef typename _Alloc::template rebind<_List_node<_Tp> >::other + _Node_alloc_type; + + typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; + + static size_t + _S_distance(const __detail::_List_node_base* __first, + const __detail::_List_node_base* __last) + { + size_t __n = 0; + while (__first != __last) + { + __first = __first->_M_next; + ++__n; + } + return __n; + } + + struct _List_impl + : public _Node_alloc_type + { + + _List_node<size_t> _M_node; + + + + + _List_impl() + : _Node_alloc_type(), _M_node() + { } + + _List_impl(const _Node_alloc_type& __a) noexcept + : _Node_alloc_type(__a), _M_node() + { } + + + _List_impl(_Node_alloc_type&& __a) noexcept + : _Node_alloc_type(std::move(__a)), _M_node() + { } + + }; + + _List_impl _M_impl; + + + size_t _M_get_size() const { return _M_impl._M_node._M_data; } + + void _M_set_size(size_t __n) { _M_impl._M_node._M_data = __n; } + + void _M_inc_size(size_t __n) { _M_impl._M_node._M_data += __n; } + + void _M_dec_size(size_t __n) { _M_impl._M_node._M_data -= __n; } + + size_t + _M_distance(const __detail::_List_node_base* __first, + const __detail::_List_node_base* __last) const + { return _S_distance(__first, __last); } + + + size_t _M_node_count() const { return _M_impl._M_node._M_data; } +# 390 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + _List_node<_Tp>* + _M_get_node() + { return _M_impl._Node_alloc_type::allocate(1); } + + void + _M_put_node(_List_node<_Tp>* __p) noexcept + { _M_impl._Node_alloc_type::deallocate(__p, 1); } + + public: + typedef _Alloc allocator_type; + + _Node_alloc_type& + _M_get_Node_allocator() noexcept + { return *static_cast<_Node_alloc_type*>(&_M_impl); } + + const _Node_alloc_type& + _M_get_Node_allocator() const noexcept + { return *static_cast<const _Node_alloc_type*>(&_M_impl); } + + _Tp_alloc_type + _M_get_Tp_allocator() const noexcept + { return _Tp_alloc_type(_M_get_Node_allocator()); } + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_get_Node_allocator()); } + + _List_base() + : _M_impl() + { _M_init(); } + + _List_base(const _Node_alloc_type& __a) noexcept + : _M_impl(__a) + { _M_init(); } + + + _List_base(_List_base&& __x) noexcept + : _M_impl(std::move(__x._M_get_Node_allocator())) + { + 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(); + } + } + + + + ~_List_base() noexcept + { _M_clear(); } + + void + _M_clear() noexcept; + + void + _M_init() 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); + } + }; +# 506 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _Tp, typename _Alloc = std::allocator<_Tp> > + class list : protected _List_base<_Tp, _Alloc> + { + + typedef typename _Alloc::value_type _Alloc_value_type; + + + + typedef _List_base<_Tp, _Alloc> _Base; + typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; + typedef typename _Base::_Node_alloc_type _Node_alloc_type; + + public: + typedef _Tp value_type; + typedef typename _Tp_alloc_type::pointer pointer; + typedef typename _Tp_alloc_type::const_pointer const_pointer; + typedef typename _Tp_alloc_type::reference reference; + typedef typename _Tp_alloc_type::const_reference const_reference; + typedef _List_iterator<_Tp> iterator; + typedef _List_const_iterator<_Tp> const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Alloc allocator_type; + + protected: + + + typedef _List_node<_Tp> _Node; + + using _Base::_M_impl; + using _Base::_M_put_node; + using _Base::_M_get_node; + using _Base::_M_get_Tp_allocator; + using _Base::_M_get_Node_allocator; +# 567 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename... _Args> + _Node* + _M_create_node(_Args&&... __args) + { + _Node* __p = this->_M_get_node(); + try + { + _M_get_Node_allocator().construct(__p, + std::forward<_Args>(__args)...); + } + catch(...) + { + _M_put_node(__p); + throw; + } + return __p; + } + + + public: + + + + + + + list() + + noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) + + : _Base() { } + + + + + + explicit + list(const allocator_type& __a) noexcept + : _Base(_Node_alloc_type(__a)) { } +# 615 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + explicit + list(size_type __n) + : _Base() + { _M_default_initialize(__n); } +# 628 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list(size_type __n, const value_type& __value, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_fill_initialize(__n, __value); } +# 655 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list(const list& __x) + : _Base(__x._M_get_Node_allocator()) + { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } +# 667 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list(list&& __x) noexcept + : _Base(std::move(__x)) { } +# 678 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list(initializer_list<value_type> __l, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } +# 695 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + list(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_initialize_dispatch(__first, __last, __false_type()); } +# 728 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list& + operator=(const list& __x); +# 739 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list& + operator=(list&& __x) + { + + + this->clear(); + this->swap(__x); + return *this; + } +# 756 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + list& + operator=(initializer_list<value_type> __l) + { + this->assign(__l.begin(), __l.end()); + return *this; + } +# 774 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + assign(size_type __n, const value_type& __val) + { _M_fill_assign(__n, __val); } +# 791 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +# 815 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + assign(initializer_list<value_type> __l) + { this->assign(__l.begin(), __l.end()); } + + + + allocator_type + get_allocator() const noexcept + { return _Base::get_allocator(); } + + + + + + + iterator + begin() noexcept + { return iterator(this->_M_impl._M_node._M_next); } + + + + + + + const_iterator + begin() const noexcept + { return const_iterator(this->_M_impl._M_node._M_next); } + + + + + + + iterator + end() noexcept + { return iterator(&this->_M_impl._M_node); } + + + + + + + const_iterator + end() const noexcept + { return const_iterator(&this->_M_impl._M_node); } + + + + + + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + + + + + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + + + + + + reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + + + + + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + + + + + + + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_impl._M_node._M_next); } + + + + + + + const_iterator + cend() const noexcept + { return const_iterator(&this->_M_impl._M_node); } + + + + + + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + + + + + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } + + + + + + + + bool + empty() const noexcept + { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } + + + size_type + size() const noexcept + { return this->_M_node_count(); } + + + size_type + max_size() const noexcept + { return _M_get_Node_allocator().max_size(); } +# 964 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + resize(size_type __new_size); +# 977 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + resize(size_type __new_size, const value_type& __x); +# 999 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + reference + front() noexcept + { return *begin(); } + + + + + + const_reference + front() const noexcept + { return *begin(); } + + + + + + reference + back() noexcept + { + iterator __tmp = end(); + --__tmp; + return *__tmp; + } + + + + + + const_reference + back() const noexcept + { + const_iterator __tmp = end(); + --__tmp; + return *__tmp; + } +# 1046 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + push_front(const value_type& __x) + { this->_M_insert(begin(), __x); } + + + void + push_front(value_type&& __x) + { this->_M_insert(begin(), std::move(__x)); } + + template<typename... _Args> + void + emplace_front(_Args&&... __args) + { this->_M_insert(begin(), std::forward<_Args>(__args)...); } +# 1073 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + pop_front() noexcept + { this->_M_erase(begin()); } +# 1087 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + push_back(const value_type& __x) + { this->_M_insert(end(), __x); } + + + void + push_back(value_type&& __x) + { this->_M_insert(end(), std::move(__x)); } + + template<typename... _Args> + void + emplace_back(_Args&&... __args) + { this->_M_insert(end(), std::forward<_Args>(__args)...); } +# 1113 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + pop_back() noexcept + { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } +# 1130 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename... _Args> + iterator + emplace(const_iterator __position, _Args&&... __args); +# 1145 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + insert(const_iterator __position, const value_type& __x); +# 1175 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + insert(const_iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } +# 1194 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + insert(const_iterator __p, initializer_list<value_type> __l) + { return this->insert(__p, __l.begin(), __l.end()); } +# 1214 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + insert(const_iterator __position, size_type __n, const value_type& __x); +# 1253 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _InputIterator, + typename = std::_RequireInputIter<_InputIterator>> + iterator + insert(const_iterator __position, _InputIterator __first, + _InputIterator __last); +# 1297 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + + erase(const_iterator __position) noexcept; +# 1322 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + iterator + + erase(const_iterator __first, const_iterator __last) noexcept + + + + { + while (__first != __last) + __first = erase(__first); + return __last._M_const_cast(); + } +# 1343 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + swap(list& __x) + { + __detail::_List_node_base::swap(this->_M_impl._M_node, + __x._M_impl._M_node); + + size_t __xsize = __x._M_get_size(); + __x._M_set_size(this->_M_get_size()); + this->_M_set_size(__xsize); + + + + std::__alloc_swap<typename _Base::_Node_alloc_type>:: + _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()); + } + + + + + + + + void + clear() noexcept + { + _Base::_M_clear(); + _Base::_M_init(); + } +# 1384 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + + splice(const_iterator __position, list&& __x) noexcept + + + + { + if (!__x.empty()) + { + _M_check_equal_allocators(__x); + + this->_M_transfer(__position._M_const_cast(), + __x.begin(), __x.end()); + + this->_M_inc_size(__x._M_get_size()); + __x._M_set_size(0); + } + } + + + void + splice(const_iterator __position, list& __x) noexcept + { splice(__position, std::move(__x)); } +# 1420 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + splice(const_iterator __position, list&& __x, const_iterator __i) noexcept +# 1435 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + { + iterator __j = __i._M_const_cast(); + ++__j; + if (__position == __i || __position == __j) + return; + + if (this != &__x) + _M_check_equal_allocators(__x); + + this->_M_transfer(__position._M_const_cast(), + __i._M_const_cast(), __j); + + this->_M_inc_size(1); + __x._M_dec_size(1); + } +# 1462 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + splice(const_iterator __position, list& __x, const_iterator __i) noexcept + { splice(__position, std::move(__x), __i); } +# 1481 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + splice(const_iterator __position, list&& __x, const_iterator __first, + const_iterator __last) noexcept +# 1501 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + { + if (__first != __last) + { + if (this != &__x) + _M_check_equal_allocators(__x); + + size_t __n = this->_M_distance(__first._M_node, __last._M_node); + this->_M_inc_size(__n); + __x._M_dec_size(__n); + + this->_M_transfer(__position._M_const_cast(), + __first._M_const_cast(), + __last._M_const_cast()); + } + } +# 1531 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + splice(const_iterator __position, list& __x, const_iterator __first, + const_iterator __last) noexcept + { splice(__position, std::move(__x), __first, __last); } +# 1548 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + remove(const _Tp& __value); +# 1562 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _Predicate> + void + remove_if(_Predicate); +# 1576 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + unique(); +# 1591 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _BinaryPredicate> + void + unique(_BinaryPredicate); +# 1605 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + merge(list&& __x); + + void + merge(list& __x) + { merge(std::move(__x)); } +# 1630 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _StrictWeakOrdering> + void + merge(list&& __x, _StrictWeakOrdering __comp); + + template<typename _StrictWeakOrdering> + void + merge(list& __x, _StrictWeakOrdering __comp) + { merge(std::move(__x), __comp); } +# 1649 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + void + reverse() noexcept + { this->_M_impl._M_node._M_reverse(); } + + + + + + + + void + sort(); + + + + + + + + template<typename _StrictWeakOrdering> + void + sort(_StrictWeakOrdering); + + protected: + + + + + + + template<typename _Integer> + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { _M_fill_initialize(static_cast<size_type>(__n), __x); } + + + template<typename _InputIterator> + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { + for (; __first != __last; ++__first) + + emplace_back(*__first); + + + + } + + + + void + _M_fill_initialize(size_type __n, const value_type& __x) + { + for (; __n; --__n) + push_back(__x); + } + + + + void + _M_default_initialize(size_type __n) + { + for (; __n; --__n) + emplace_back(); + } + + + void + _M_default_append(size_type __n); +# 1727 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _Integer> + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + + template<typename _InputIterator> + void + _M_assign_dispatch(_InputIterator __first, _InputIterator __last, + __false_type); + + + + void + _M_fill_assign(size_type __n, const value_type& __val); + + + + void + _M_transfer(iterator __position, iterator __first, iterator __last) + { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } +# 1759 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename... _Args> + void + _M_insert(iterator __position, _Args&&... __args) + { + _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); + __tmp->_M_hook(__position._M_node); + this->_M_inc_size(1); + } + + + + void + _M_erase(iterator __position) noexcept + { + this->_M_dec_size(1); + __position._M_node->_M_unhook(); + _Node* __n = static_cast<_Node*>(__position._M_node); + + _M_get_Node_allocator().destroy(__n); + + + + _M_put_node(__n); + } + + + void + _M_check_equal_allocators(list& __x) noexcept + { + if (std::__alloc_neq<typename _Base::_Node_alloc_type>:: + _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator())) + __builtin_abort(); + } + }; +} +# 1805 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _Tp, typename _Alloc> + inline bool + operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { + typedef typename list<_Tp, _Alloc>::const_iterator const_iterator; + const_iterator __end1 = __x.end(); + const_iterator __end2 = __y.end(); + + const_iterator __i1 = __x.begin(); + const_iterator __i2 = __y.begin(); + while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) + { + ++__i1; + ++__i2; + } + return __i1 == __end1 && __i2 == __end2; + } +# 1834 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_list.h" 3 + template<typename _Tp, typename _Alloc> + inline bool + operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return std::lexicographical_compare(__x.begin(), __x.end(), + __y.begin(), __y.end()); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return __y < __x; } + + + template<typename _Tp, typename _Alloc> + inline bool + operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + + template<typename _Tp, typename _Alloc> + inline bool + operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + + template<typename _Tp, typename _Alloc> + inline void + swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) + { __x.swap(__y); } + + +} +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/list" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/list.tcc" 1 3 +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/list.tcc" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Tp, typename _Alloc> + void + _List_base<_Tp, _Alloc>:: + _M_clear() noexcept + { + typedef _List_node<_Tp> _Node; + __detail::_List_node_base* __cur = _M_impl._M_node._M_next; + while (__cur != &_M_impl._M_node) + { + _Node* __tmp = static_cast<_Node*>(__cur); + __cur = __tmp->_M_next; + + _M_get_Node_allocator().destroy(__tmp); + + + + _M_put_node(__tmp); + } + } + + + template<typename _Tp, typename _Alloc> + template<typename... _Args> + typename list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + emplace(const_iterator __position, _Args&&... __args) + { + _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); + __tmp->_M_hook(__position._M_const_cast()._M_node); + this->_M_inc_size(1); + return iterator(__tmp); + } + + + template<typename _Tp, typename _Alloc> + typename list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + + insert(const_iterator __position, const value_type& __x) + + + + { + _Node* __tmp = _M_create_node(__x); + __tmp->_M_hook(__position._M_const_cast()._M_node); + this->_M_inc_size(1); + return iterator(__tmp); + } + + + template<typename _Tp, typename _Alloc> + typename list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + insert(const_iterator __position, size_type __n, const value_type& __x) + { + if (__n) + { + list __tmp(__n, __x, get_allocator()); + iterator __it = __tmp.begin(); + splice(__position, __tmp); + return __it; + } + return __position._M_const_cast(); + } + + template<typename _Tp, typename _Alloc> + template<typename _InputIterator, typename> + typename list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + insert(const_iterator __position, _InputIterator __first, + _InputIterator __last) + { + list __tmp(__first, __last, get_allocator()); + if (!__tmp.empty()) + { + iterator __it = __tmp.begin(); + splice(__position, __tmp); + return __it; + } + return __position._M_const_cast(); + } + + + template<typename _Tp, typename _Alloc> + typename list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + + erase(const_iterator __position) noexcept + + + + { + iterator __ret = iterator(__position._M_node->_M_next); + _M_erase(__position._M_const_cast()); + return __ret; + } + + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + _M_default_append(size_type __n) + { + size_type __i = 0; + try + { + for (; __i < __n; ++__i) + emplace_back(); + } + catch(...) + { + for (; __i; --__i) + pop_back(); + throw; + } + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + resize(size_type __new_size) + { + iterator __i = begin(); + size_type __len = 0; + for (; __i != end() && __len < __new_size; ++__i, ++__len) + ; + if (__len == __new_size) + erase(__i, end()); + else + _M_default_append(__new_size - __len); + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + resize(size_type __new_size, const value_type& __x) + { + iterator __i = begin(); + size_type __len = 0; + for (; __i != end() && __len < __new_size; ++__i, ++__len) + ; + if (__len == __new_size) + erase(__i, end()); + else + insert(end(), __new_size - __len, __x); + } +# 226 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/list.tcc" 3 + template<typename _Tp, typename _Alloc> + list<_Tp, _Alloc>& + list<_Tp, _Alloc>:: + operator=(const list& __x) + { + if (this != &__x) + { + iterator __first1 = begin(); + iterator __last1 = end(); + const_iterator __first2 = __x.begin(); + const_iterator __last2 = __x.end(); + for (; __first1 != __last1 && __first2 != __last2; + ++__first1, ++__first2) + *__first1 = *__first2; + if (__first2 == __last2) + erase(__first1, __last1); + else + insert(__last1, __first2, __last2); + } + return *this; + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + _M_fill_assign(size_type __n, const value_type& __val) + { + iterator __i = begin(); + for (; __i != end() && __n > 0; ++__i, --__n) + *__i = __val; + if (__n > 0) + insert(end(), __n, __val); + else + erase(__i, end()); + } + + template<typename _Tp, typename _Alloc> + template <typename _InputIterator> + void + list<_Tp, _Alloc>:: + _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, + __false_type) + { + iterator __first1 = begin(); + iterator __last1 = end(); + for (; __first1 != __last1 && __first2 != __last2; + ++__first1, ++__first2) + *__first1 = *__first2; + if (__first2 == __last2) + erase(__first1, __last1); + else + insert(__last1, __first2, __last2); + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + remove(const value_type& __value) + { + iterator __first = begin(); + iterator __last = end(); + iterator __extra = __last; + while (__first != __last) + { + iterator __next = __first; + ++__next; + if (*__first == __value) + { + + + + if (std::__addressof(*__first) != std::__addressof(__value)) + _M_erase(__first); + else + __extra = __first; + } + __first = __next; + } + if (__extra != __last) + _M_erase(__extra); + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + unique() + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + if (*__first == *__next) + _M_erase(__next); + else + __first = __next; + __next = __first; + } + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + + merge(list&& __x) + + + + { + + + if (this != &__x) + { + _M_check_equal_allocators(__x); + + iterator __first1 = begin(); + iterator __last1 = end(); + iterator __first2 = __x.begin(); + iterator __last2 = __x.end(); + while (__first1 != __last1 && __first2 != __last2) + if (*__first2 < *__first1) + { + iterator __next = __first2; + _M_transfer(__first1, __first2, ++__next); + __first2 = __next; + } + else + ++__first1; + if (__first2 != __last2) + _M_transfer(__last1, __first2, __last2); + + this->_M_inc_size(__x._M_get_size()); + __x._M_set_size(0); + } + } + + template<typename _Tp, typename _Alloc> + template <typename _StrictWeakOrdering> + void + list<_Tp, _Alloc>:: + + merge(list&& __x, _StrictWeakOrdering __comp) + + + + { + + + if (this != &__x) + { + _M_check_equal_allocators(__x); + + iterator __first1 = begin(); + iterator __last1 = end(); + iterator __first2 = __x.begin(); + iterator __last2 = __x.end(); + while (__first1 != __last1 && __first2 != __last2) + if (__comp(*__first2, *__first1)) + { + iterator __next = __first2; + _M_transfer(__first1, __first2, ++__next); + __first2 = __next; + } + else + ++__first1; + if (__first2 != __last2) + _M_transfer(__last1, __first2, __last2); + + this->_M_inc_size(__x._M_get_size()); + __x._M_set_size(0); + } + } + + template<typename _Tp, typename _Alloc> + void + list<_Tp, _Alloc>:: + sort() + { + + if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node + && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) + { + list __carry; + list __tmp[64]; + list * __fill = &__tmp[0]; + list * __counter; + + do + { + __carry.splice(__carry.begin(), *this, begin()); + + for(__counter = &__tmp[0]; + __counter != __fill && !__counter->empty(); + ++__counter) + { + __counter->merge(__carry); + __carry.swap(*__counter); + } + __carry.swap(*__counter); + if (__counter == __fill) + ++__fill; + } + while ( !empty() ); + + for (__counter = &__tmp[1]; __counter != __fill; ++__counter) + __counter->merge(*(__counter - 1)); + swap( *(__fill - 1) ); + } + } + + template<typename _Tp, typename _Alloc> + template <typename _Predicate> + void + list<_Tp, _Alloc>:: + remove_if(_Predicate __pred) + { + iterator __first = begin(); + iterator __last = end(); + while (__first != __last) + { + iterator __next = __first; + ++__next; + if (__pred(*__first)) + _M_erase(__first); + __first = __next; + } + } + + template<typename _Tp, typename _Alloc> + template <typename _BinaryPredicate> + void + list<_Tp, _Alloc>:: + unique(_BinaryPredicate __binary_pred) + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + if (__binary_pred(*__first, *__next)) + _M_erase(__next); + else + __first = __next; + __next = __first; + } + } + + template<typename _Tp, typename _Alloc> + template <typename _StrictWeakOrdering> + void + list<_Tp, _Alloc>:: + sort(_StrictWeakOrdering __comp) + { + + if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node + && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) + { + list __carry; + list __tmp[64]; + list * __fill = &__tmp[0]; + list * __counter; + + do + { + __carry.splice(__carry.begin(), *this, begin()); + + for(__counter = &__tmp[0]; + __counter != __fill && !__counter->empty(); + ++__counter) + { + __counter->merge(__carry, __comp); + __carry.swap(*__counter); + } + __carry.swap(*__counter); + if (__counter == __fill) + ++__fill; + } + while ( !empty() ); + + for (__counter = &__tmp[1]; __counter != __fill; ++__counter) + __counter->merge(*(__counter - 1), __comp); + swap(*(__fill - 1)); + } + } + + +} +# 65 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/list" 2 3 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 + + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 1 3 4 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 3 4 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/syslimits.h" 1 3 4 + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 1 3 4 +# 168 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/limits.h" 1 3 4 +# 143 "/mnt/odroid-c2/usr/include/limits.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 1 3 4 +# 160 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/local_lim.h" 1 3 4 +# 39 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/local_lim.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/linux/limits.h" 1 3 4 +# 40 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/local_lim.h" 2 3 4 +# 161 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 2 3 4 +# 144 "/mnt/odroid-c2/usr/include/limits.h" 2 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/posix2_lim.h" 1 3 4 +# 148 "/mnt/odroid-c2/usr/include/limits.h" 2 3 4 + + + +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 1 3 4 +# 33 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 3 4 +# 1 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4 +# 34 "/mnt/odroid-c2/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 2 3 4 +# 152 "/mnt/odroid-c2/usr/include/limits.h" 2 3 4 +# 169 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 2 3 4 +# 8 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/syslimits.h" 2 3 4 +# 35 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 2 3 4 +# 59 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 + + + + + + + + + + + +# 69 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" +template <typename T> class QVector; +template <typename T> class QSet; + +template <typename T> struct QListSpecialMethods +{ +protected: + ~QListSpecialMethods() {} +}; +template <> struct QListSpecialMethods<QByteArray>; +template <> struct QListSpecialMethods<QString>; + +struct __attribute__((visibility("default"))) QListData { + + + struct NotArrayCompatibleLayout {}; + struct NotIndirectLayout {}; + struct ArrayCompatibleLayout : NotIndirectLayout {}; + struct InlineWithPaddingLayout : NotArrayCompatibleLayout, NotIndirectLayout {}; + struct IndirectLayout : NotArrayCompatibleLayout {}; + + struct Data { + QtPrivate::RefCount ref; + int alloc, begin, end; + void *array[1]; + }; + enum { DataHeaderSize = sizeof(Data) - sizeof(void *) }; + + Data *detach(int alloc); + Data *detach_grow(int *i, int n); + void realloc(int alloc); + void realloc_grow(int growth); + inline void dispose() { dispose(d); } + static void dispose(Data *d); + static const Data shared_null; + Data *d; + void **erase(void **xi); + void **append(int n); + void **append(); + void **append(const QListData &l); + void **prepend(); + void **insert(int i); + void remove(int i); + void remove(int i, int n); + void move(int from, int to); + inline int size() const noexcept { return d->end - d->begin; } + inline bool isEmpty() const noexcept { return d->end == d->begin; } + inline void **at(int i) const noexcept { return d->array + d->begin + i; } + inline void **begin() const noexcept { return d->array + d->begin; } + inline void **end() const noexcept { return d->array + d->end; } +}; + +template <typename T> +class QList : public QListSpecialMethods<T> +{ +public: + struct MemoryLayout + : QtPrivate::if_< + QTypeInfo<T>::isStatic || QTypeInfo<T>::isLarge, + QListData::IndirectLayout, + typename QtPrivate::if_< + sizeof(T) == sizeof(void*), + QListData::ArrayCompatibleLayout, + QListData::InlineWithPaddingLayout + >::type>::type {}; +private: + struct Node { void *v; + + + + inline T &t() + { return *reinterpret_cast<T*>(QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic + ? v : this); } + + }; + + union { QListData p; QListData::Data *d; }; + +public: + inline QList() noexcept : d(const_cast<QListData::Data *>(&QListData::shared_null)) { } + QList(const QList<T> &l); + ~QList(); + QList<T> &operator=(const QList<T> &l); + + inline QList(QList<T> &&other) noexcept + : d(other.d) { other.d = const_cast<QListData::Data *>(&QListData::shared_null); } + inline QList &operator=(QList<T> &&other) noexcept + { QList moved(std::move(other)); swap(moved); return *this; } + + inline void swap(QList<T> &other) noexcept { qSwap(d, other.d); } + + inline QList(std::initializer_list<T> args) + : d(const_cast<QListData::Data *>(&QListData::shared_null)) + { reserve(int(args.size())); std::copy(args.begin(), args.end(), std::back_inserter(*this)); } + + bool operator==(const QList<T> &l) const; + inline bool operator!=(const QList<T> &l) const { return !(*this == l); } + + inline int size() const noexcept { return p.size(); } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + + inline void detachShared() + { + + if (d->ref.isShared() && this->d != &QListData::shared_null) + detach_helper(); + } + + inline bool isDetached() const { return !d->ref.isShared(); } + + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + if (d != &QListData::shared_null) + d->ref.setSharable(sharable); + } + + inline bool isSharedWith(const QList<T> &other) const noexcept { return d == other.d; } + + inline bool isEmpty() const noexcept { return p.isEmpty(); } + + void clear(); + + const T &at(int i) const; + const T &operator[](int i) const; + T &operator[](int i); + + void reserve(int size); + void append(const T &t); + void append(const QList<T> &t); + void prepend(const T &t); + void insert(int i, const T &t); + void replace(int i, const T &t); + void removeAt(int i); + int removeAll(const T &t); + bool removeOne(const T &t); + T takeAt(int i); + T takeFirst(); + T takeLast(); + void move(int from, int to); + void swap(int i, int j); + int indexOf(const T &t, int from = 0) const; + int lastIndexOf(const T &t, int from = -1) const; + bool contains(const T &t) const; + int count(const T &t) const; + + class const_iterator; + + class iterator { + public: + Node *i; + typedef std::random_access_iterator_tag iterator_category; + + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() noexcept : i(nullptr) {} + inline iterator(Node *n) noexcept : i(n) {} + + + + inline iterator(const iterator &o) noexcept : i(o.i){} + + inline T &operator*() const { return i->t(); } + inline T *operator->() const { return &i->t(); } + inline T &operator[](difference_type j) const { return i[j].t(); } + inline bool operator==(const iterator &o) const noexcept { return i == o.i; } + inline bool operator!=(const iterator &o) const noexcept { return i != o.i; } + inline bool operator<(const iterator& other) const noexcept { return i < other.i; } + inline bool operator<=(const iterator& other) const noexcept { return i <= other.i; } + inline bool operator>(const iterator& other) const noexcept { return i > other.i; } + inline bool operator>=(const iterator& other) const noexcept { return i >= other.i; } + + inline bool operator==(const const_iterator &o) const noexcept + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const noexcept + { return i != o.i; } + inline bool operator<(const const_iterator& other) const noexcept + { return i < other.i; } + inline bool operator<=(const const_iterator& other) const noexcept + { return i <= other.i; } + inline bool operator>(const const_iterator& other) const noexcept + { return i > other.i; } + inline bool operator>=(const const_iterator& other) const noexcept + { return i >= other.i; } + + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { Node *n = i; ++i; return n; } + inline iterator &operator--() { i--; return *this; } + inline iterator operator--(int) { Node *n = i; i--; return n; } + inline iterator &operator+=(difference_type j) { i+=j; return *this; } + inline iterator &operator-=(difference_type j) { i-=j; return *this; } + inline iterator operator+(difference_type j) const { return iterator(i+j); } + inline iterator operator-(difference_type j) const { return iterator(i-j); } + inline int operator-(iterator j) const { return int(i - j.i); } + }; + friend class iterator; + + class const_iterator { + public: + Node *i; + typedef std::random_access_iterator_tag iterator_category; + + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() noexcept : i(nullptr) {} + inline const_iterator(Node *n) noexcept : i(n) {} + + + + inline const_iterator(const const_iterator &o) noexcept : i(o.i) {} + + + + + inline const_iterator(const iterator &o) noexcept : i(o.i) {} + + inline const T &operator*() const { return i->t(); } + inline const T *operator->() const { return &i->t(); } + inline const T &operator[](difference_type j) const { return i[j].t(); } + inline bool operator==(const const_iterator &o) const noexcept { return i == o.i; } + inline bool operator!=(const const_iterator &o) const noexcept { return i != o.i; } + inline bool operator<(const const_iterator& other) const noexcept { return i < other.i; } + inline bool operator<=(const const_iterator& other) const noexcept { return i <= other.i; } + inline bool operator>(const const_iterator& other) const noexcept { return i > other.i; } + inline bool operator>=(const const_iterator& other) const noexcept { return i >= other.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { Node *n = i; ++i; return n; } + inline const_iterator &operator--() { i--; return *this; } + inline const_iterator operator--(int) { Node *n = i; i--; return n; } + inline const_iterator &operator+=(difference_type j) { i+=j; return *this; } + inline const_iterator &operator-=(difference_type j) { i-=j; return *this; } + inline const_iterator operator+(difference_type j) const { return const_iterator(i+j); } + inline const_iterator operator-(difference_type j) const { return const_iterator(i-j); } + inline int operator-(const_iterator j) const { return int(i - j.i); } + }; + friend class const_iterator; + + + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + inline iterator begin() { detach(); return reinterpret_cast<Node *>(p.begin()); } + inline const_iterator begin() const noexcept { return reinterpret_cast<Node *>(p.begin()); } + inline const_iterator cbegin() const noexcept { return reinterpret_cast<Node *>(p.begin()); } + inline const_iterator constBegin() const noexcept { return reinterpret_cast<Node *>(p.begin()); } + inline iterator end() { detach(); return reinterpret_cast<Node *>(p.end()); } + inline const_iterator end() const noexcept { return reinterpret_cast<Node *>(p.end()); } + inline const_iterator cend() const noexcept { return reinterpret_cast<Node *>(p.end()); } + inline const_iterator constEnd() const noexcept { return reinterpret_cast<Node *>(p.end()); } + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } + iterator insert(iterator before, const T &t); + iterator erase(iterator pos); + iterator erase(iterator first, iterator last); + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return p.size(); } + inline int length() const { return p.size(); } + inline T& first() { do { } while ((false) && (!isEmpty())); return *begin(); } + inline const T& constFirst() const { return first(); } + inline const T& first() const { do { } while ((false) && (!isEmpty())); return at(0); } + T& last() { do { } while ((false) && (!isEmpty())); return *(--end()); } + const T& last() const { do { } while ((false) && (!isEmpty())); return at(count() - 1); } + inline const T& constLast() const { return last(); } + inline void removeFirst() { do { } while ((false) && (!isEmpty())); erase(begin()); } + inline void removeLast() { do { } while ((false) && (!isEmpty())); erase(--end()); } + inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; } + inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; } + QList<T> mid(int pos, int length = -1) const; + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + + inline void push_back(const T &t) { append(t); } + inline void push_front(const T &t) { prepend(t); } + inline T& front() { return first(); } + inline const T& front() const { return first(); } + inline T& back() { return last(); } + inline const T& back() const { return last(); } + inline void pop_front() { removeFirst(); } + inline void pop_back() { removeLast(); } + inline bool empty() const { return isEmpty(); } + typedef int size_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + + typedef qptrdiff difference_type; + + + QList<T> &operator+=(const QList<T> &l); + inline QList<T> operator+(const QList<T> &l) const + { QList n = *this; n += l; return n; } + inline QList<T> &operator+=(const T &t) + { append(t); return *this; } + inline QList<T> &operator<< (const T &t) + { append(t); return *this; } + inline QList<T> &operator<<(const QList<T> &l) + { *this += l; return *this; } + + QVector<T> toVector() const; + QSet<T> toSet() const; + + static QList<T> fromVector(const QVector<T> &vector); + static QList<T> fromSet(const QSet<T> &set); + + static inline QList<T> fromStdList(const std::list<T> &list) + { QList<T> tmp; std::copy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } + inline std::list<T> toStdList() const + { std::list<T> tmp; std::copy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } + +private: + Node *detach_helper_grow(int i, int n); + void detach_helper(int alloc); + void detach_helper(); + void dealloc(QListData::Data *d); + + void node_construct(Node *n, const T &t); + void node_destruct(Node *n); + void node_copy(Node *from, Node *to, Node *src); + void node_destruct(Node *from, Node *to); + + bool isValidIterator(const iterator &i) const noexcept + { + return (constBegin().i <= i.i) && (i.i <= constEnd().i); + } + +private: + inline bool op_eq_impl(const QList &other, QListData::NotArrayCompatibleLayout) const; + inline bool op_eq_impl(const QList &other, QListData::ArrayCompatibleLayout) const; + inline bool contains_impl(const T &, QListData::NotArrayCompatibleLayout) const; + inline bool contains_impl(const T &, QListData::ArrayCompatibleLayout) const; + inline int count_impl(const T &, QListData::NotArrayCompatibleLayout) const; + inline int count_impl(const T &, QListData::ArrayCompatibleLayout) const; +}; + + + + + + + +template <typename T> +inline void QList<T>::node_construct(Node *n, const T &t) +{ + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t); + else if (QTypeInfo<T>::isComplex) new (n) T(t); + + + + + + + + else ::memcpy(n, static_cast<const void *>(&t), sizeof(T)); + +} + +template <typename T> +inline void QList<T>::node_destruct(Node *n) +{ + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) delete reinterpret_cast<T*>(n->v); + else if (QTypeInfo<T>::isComplex) reinterpret_cast<T*>(n)->~T(); +} + +template <typename T> +inline void QList<T>::node_copy(Node *from, Node *to, Node *src) +{ + Node *current = from; + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) { + try { + while(current != to) { + current->v = new T(*reinterpret_cast<T*>(src->v)); + ++current; + ++src; + } + } catch (...) { + while (current-- != from) + delete reinterpret_cast<T*>(current->v); + throw; + } + + } else if (QTypeInfo<T>::isComplex) { + try { + while(current != to) { + new (current) T(*reinterpret_cast<T*>(src)); + ++current; + ++src; + } + } catch (...) { + while (current-- != from) + (reinterpret_cast<T*>(current))->~T(); + throw; + } + } else { + if (src != from && to - from > 0) + memcpy(from, src, (to - from) * sizeof(Node)); + } +} + +template <typename T> +inline void QList<T>::node_destruct(Node *from, Node *to) +{ + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) + while(from != to) --to, delete reinterpret_cast<T*>(to->v); + else if (QTypeInfo<T>::isComplex) + while (from != to) --to, reinterpret_cast<T*>(to)->~T(); +} + +template <typename T> +inline QList<T> &QList<T>::operator=(const QList<T> &l) +{ + if (d != l.d) { + QList<T> tmp(l); + tmp.swap(*this); + } + return *this; +} +template <typename T> +inline typename QList<T>::iterator QList<T>::insert(iterator before, const T &t) +{ + do { } while ((false) && (isValidIterator(before))); + + int iBefore = int(before.i - reinterpret_cast<Node *>(p.begin())); + Node *n = 0; + if (d->ref.isShared()) + n = detach_helper_grow(iBefore, 1); + else + n = reinterpret_cast<Node *>(p.insert(iBefore)); + try { + node_construct(n, t); + } catch (...) { + p.remove(iBefore); + throw; + } + return n; +} +template <typename T> +inline typename QList<T>::iterator QList<T>::erase(iterator it) +{ + do { } while ((false) && (isValidIterator(it))); + if (d->ref.isShared()) { + int offset = int(it.i - reinterpret_cast<Node *>(p.begin())); + it = begin(); + it += offset; + } + node_destruct(it.i); + return reinterpret_cast<Node *>(p.erase(reinterpret_cast<void**>(it.i))); +} +template <typename T> +inline const T &QList<T>::at(int i) const +{ do { } while ((false) && (i >= 0 && i < p.size())); + return reinterpret_cast<Node *>(p.at(i))->t(); } +template <typename T> +inline const T &QList<T>::operator[](int i) const +{ do { } while ((false) && (i >= 0 && i < p.size())); + return reinterpret_cast<Node *>(p.at(i))->t(); } +template <typename T> +inline T &QList<T>::operator[](int i) +{ do { } while ((false) && (i >= 0 && i < p.size())); + detach(); return reinterpret_cast<Node *>(p.at(i))->t(); } +template <typename T> +inline void QList<T>::removeAt(int i) +{ if(i >= 0 && i < p.size()) { detach(); + node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i); } } +template <typename T> +inline T QList<T>::takeAt(int i) +{ do { } while ((false) && (i >= 0 && i < p.size())); + detach(); Node *n = reinterpret_cast<Node *>(p.at(i)); T t = n->t(); node_destruct(n); + p.remove(i); return t; } +template <typename T> +inline T QList<T>::takeFirst() +{ T t = first(); removeFirst(); return t; } +template <typename T> +inline T QList<T>::takeLast() +{ T t = last(); removeLast(); return t; } + +template <typename T> + void QList<T>::reserve(int alloc) +{ + if (d->alloc < alloc) { + if (d->ref.isShared()) + detach_helper(alloc); + else + p.realloc(alloc); + } +} + +template <typename T> + void QList<T>::append(const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(0x7fffffff, 1); + try { + node_construct(n, t); + } catch (...) { + --d->end; + throw; + } + } else { + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) { + Node *n = reinterpret_cast<Node *>(p.append()); + try { + node_construct(n, t); + } catch (...) { + --d->end; + throw; + } + } else { + Node *n, copy; + node_construct(©, t); + try { + n = reinterpret_cast<Node *>(p.append());; + } catch (...) { + node_destruct(©); + throw; + } + *n = copy; + } + } +} + +template <typename T> +inline void QList<T>::prepend(const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(0, 1); + try { + node_construct(n, t); + } catch (...) { + ++d->begin; + throw; + } + } else { + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) { + Node *n = reinterpret_cast<Node *>(p.prepend()); + try { + node_construct(n, t); + } catch (...) { + ++d->begin; + throw; + } + } else { + Node *n, copy; + node_construct(©, t); + try { + n = reinterpret_cast<Node *>(p.prepend());; + } catch (...) { + node_destruct(©); + throw; + } + *n = copy; + } + } +} + +template <typename T> +inline void QList<T>::insert(int i, const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(i, 1); + try { + node_construct(n, t); + } catch (...) { + p.remove(i); + throw; + } + } else { + if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) { + Node *n = reinterpret_cast<Node *>(p.insert(i)); + try { + node_construct(n, t); + } catch (...) { + p.remove(i); + throw; + } + } else { + Node *n, copy; + node_construct(©, t); + try { + n = reinterpret_cast<Node *>(p.insert(i));; + } catch (...) { + node_destruct(©); + throw; + } + *n = copy; + } + } +} + +template <typename T> +inline void QList<T>::replace(int i, const T &t) +{ + do { } while ((false) && (i >= 0 && i < p.size())); + detach(); + reinterpret_cast<Node *>(p.at(i))->t() = t; +} + +template <typename T> +inline void QList<T>::swap(int i, int j) +{ + do { } while ((false) && (i >= 0 && i < p.size() && j >= 0 && j < p.size())) + ; + detach(); + std::swap(d->array[d->begin + i], d->array[d->begin + j]); +} + +template <typename T> +inline void QList<T>::move(int from, int to) +{ + do { } while ((false) && (from >= 0 && from < p.size() && to >= 0 && to < p.size())) + ; + detach(); + p.move(from, to); +} + +template<typename T> + QList<T> QList<T>::mid(int pos, int alength) const +{ + using namespace QtPrivate; + switch (QContainerImplHelper::mid(size(), &pos, &alength)) { + case QContainerImplHelper::Null: + case QContainerImplHelper::Empty: + return QList<T>(); + case QContainerImplHelper::Full: + return *this; + case QContainerImplHelper::Subset: + break; + } + + QList<T> cpy; + if (alength <= 0) + return cpy; + cpy.reserve(alength); + cpy.d->end = alength; + try { + cpy.node_copy(reinterpret_cast<Node *>(cpy.p.begin()), + reinterpret_cast<Node *>(cpy.p.end()), + reinterpret_cast<Node *>(p.begin() + pos)); + } catch (...) { + + cpy.d->end = 0; + throw; + } + return cpy; +} + +template<typename T> + T QList<T>::value(int i) const +{ + if (i < 0 || i >= p.size()) { + return T(); + } + return reinterpret_cast<Node *>(p.at(i))->t(); +} + +template<typename T> + T QList<T>::value(int i, const T& defaultValue) const +{ + return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast<Node *>(p.at(i))->t()); +} + +template <typename T> + typename QList<T>::Node *QList<T>::detach_helper_grow(int i, int c) +{ + Node *n = reinterpret_cast<Node *>(p.begin()); + QListData::Data *x = p.detach_grow(&i, c); + try { + node_copy(reinterpret_cast<Node *>(p.begin()), + reinterpret_cast<Node *>(p.begin() + i), n); + } catch (...) { + p.dispose(); + d = x; + throw; + } + try { + node_copy(reinterpret_cast<Node *>(p.begin() + i + c), + reinterpret_cast<Node *>(p.end()), n + i); + } catch (...) { + node_destruct(reinterpret_cast<Node *>(p.begin()), + reinterpret_cast<Node *>(p.begin() + i)); + p.dispose(); + d = x; + throw; + } + + if (!x->ref.deref()) + dealloc(x); + + return reinterpret_cast<Node *>(p.begin() + i); +} + +template <typename T> + void QList<T>::detach_helper(int alloc) +{ + Node *n = reinterpret_cast<Node *>(p.begin()); + QListData::Data *x = p.detach(alloc); + try { + node_copy(reinterpret_cast<Node *>(p.begin()), reinterpret_cast<Node *>(p.end()), n); + } catch (...) { + p.dispose(); + d = x; + throw; + } + + if (!x->ref.deref()) + dealloc(x); +} + +template <typename T> + void QList<T>::detach_helper() +{ + detach_helper(d->alloc); +} + +template <typename T> + QList<T>::QList(const QList<T> &l) + : QListSpecialMethods<T>(l), d(l.d) +{ + if (!d->ref.ref()) { + p.detach(d->alloc); + + try { + node_copy(reinterpret_cast<Node *>(p.begin()), + reinterpret_cast<Node *>(p.end()), + reinterpret_cast<Node *>(l.p.begin())); + } catch (...) { + QListData::dispose(d); + throw; + } + } +} + +template <typename T> + QList<T>::~QList() +{ + if (!d->ref.deref()) + dealloc(d); +} + +template <typename T> + bool QList<T>::operator==(const QList<T> &l) const +{ + if (d == l.d) + return true; + if (p.size() != l.p.size()) + return false; + return this->op_eq_impl(l, MemoryLayout()); +} + +template <typename T> +inline bool QList<T>::op_eq_impl(const QList &l, QListData::NotArrayCompatibleLayout) const +{ + Node *i = reinterpret_cast<Node *>(p.begin()); + Node *e = reinterpret_cast<Node *>(p.end()); + Node *li = reinterpret_cast<Node *>(l.p.begin()); + for (; i != e; ++i, ++li) { + if (!(i->t() == li->t())) + return false; + } + return true; +} + +template <typename T> +inline bool QList<T>::op_eq_impl(const QList &l, QListData::ArrayCompatibleLayout) const +{ + const T *lb = reinterpret_cast<const T*>(l.p.begin()); + const T *b = reinterpret_cast<const T*>(p.begin()); + const T *e = reinterpret_cast<const T*>(p.end()); + return std::equal(b, e, lb); +} + +template <typename T> + void QList<T>::dealloc(QListData::Data *data) +{ + node_destruct(reinterpret_cast<Node *>(data->array + data->begin), + reinterpret_cast<Node *>(data->array + data->end)); + QListData::dispose(data); +} + + +template <typename T> + void QList<T>::clear() +{ + *this = QList<T>(); +} + +template <typename T> + int QList<T>::removeAll(const T &_t) +{ + int index = indexOf(_t); + if (index == -1) + return 0; + + const T t = _t; + detach(); + + Node *i = reinterpret_cast<Node *>(p.at(index)); + Node *e = reinterpret_cast<Node *>(p.end()); + Node *n = i; + node_destruct(i); + while (++i != e) { + if (i->t() == t) + node_destruct(i); + else + *n++ = *i; + } + + int removedCount = e - n; + d->end -= removedCount; + return removedCount; +} + +template <typename T> + bool QList<T>::removeOne(const T &_t) +{ + int index = indexOf(_t); + if (index != -1) { + removeAt(index); + return true; + } + return false; +} + +template <typename T> + typename QList<T>::iterator QList<T>::erase(typename QList<T>::iterator afirst, + typename QList<T>::iterator alast) +{ + do { } while ((false) && (isValidIterator(afirst))); + do { } while ((false) && (isValidIterator(alast))); + + if (d->ref.isShared()) { + + int offsetfirst = int(afirst.i - reinterpret_cast<Node *>(p.begin())); + int offsetlast = int(alast.i - reinterpret_cast<Node *>(p.begin())); + afirst = begin(); + alast = afirst; + afirst += offsetfirst; + alast += offsetlast; + } + + for (Node *n = afirst.i; n < alast.i; ++n) + node_destruct(n); + int idx = afirst - begin(); + p.remove(idx, alast - afirst); + return begin() + idx; +} + +template <typename T> + QList<T> &QList<T>::operator+=(const QList<T> &l) +{ + if (!l.isEmpty()) { + if (d == &QListData::shared_null) { + *this = l; + } else { + Node *n = (d->ref.isShared()) + ? detach_helper_grow(0x7fffffff, l.size()) + : reinterpret_cast<Node *>(p.append(l.p)); + try { + node_copy(n, reinterpret_cast<Node *>(p.end()), + reinterpret_cast<Node *>(l.p.begin())); + } catch (...) { + + d->end -= int(reinterpret_cast<Node *>(p.end()) - n); + throw; + } + } + } + return *this; +} + +template <typename T> +inline void QList<T>::append(const QList<T> &t) +{ + *this += t; +} + +template <typename T> + int QList<T>::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + p.size(), 0); + if (from < p.size()) { + Node *n = reinterpret_cast<Node *>(p.at(from -1)); + Node *e = reinterpret_cast<Node *>(p.end()); + while (++n != e) + if (n->t() == t) + return int(n - reinterpret_cast<Node *>(p.begin())); + } + return -1; +} + +template <typename T> + int QList<T>::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += p.size(); + else if (from >= p.size()) + from = p.size()-1; + if (from >= 0) { + Node *b = reinterpret_cast<Node *>(p.begin()); + Node *n = reinterpret_cast<Node *>(p.at(from + 1)); + while (n-- != b) { + if (n->t() == t) + return n - b; + } + } + return -1; +} + +template <typename T> + bool QList<T>::contains(const T &t) const +{ + return contains_impl(t, MemoryLayout()); +} + +template <typename T> +inline bool QList<T>::contains_impl(const T &t, QListData::NotArrayCompatibleLayout) const +{ + Node *e = reinterpret_cast<Node *>(p.end()); + Node *i = reinterpret_cast<Node *>(p.begin()); + for (; i != e; ++i) + if (i->t() == t) + return true; + return false; +} + +template <typename T> +inline bool QList<T>::contains_impl(const T &t, QListData::ArrayCompatibleLayout) const +{ + const T *b = reinterpret_cast<const T*>(p.begin()); + const T *e = reinterpret_cast<const T*>(p.end()); + return std::find(b, e, t) != e; +} + +template <typename T> + int QList<T>::count(const T &t) const +{ + return this->count_impl(t, MemoryLayout()); +} + +template <typename T> +inline int QList<T>::count_impl(const T &t, QListData::NotArrayCompatibleLayout) const +{ + int c = 0; + Node *e = reinterpret_cast<Node *>(p.end()); + Node *i = reinterpret_cast<Node *>(p.begin()); + for (; i != e; ++i) + if (i->t() == t) + ++c; + return c; +} + +template <typename T> +inline int QList<T>::count_impl(const T &t, QListData::ArrayCompatibleLayout) const +{ + return int(std::count(reinterpret_cast<const T*>(p.begin()), + reinterpret_cast<const T*>(p.end()), + t)); +} + +template <class T> class QListIterator { typedef typename QList<T>::const_iterator const_iterator; QList<T> c; const_iterator i; public: inline QListIterator(const QList<T> &container) : c(container), i(c.constBegin()) {} inline QListIterator &operator=(const QList<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } }; +template <class T> class QMutableListIterator { typedef typename QList<T>::iterator iterator; typedef typename QList<T>::const_iterator const_iterator; QList<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableListIterator(QList<T> &container) : c(&container) { i = c->begin(); n = c->end(); } inline QMutableListIterator &operator=(QList<T> &container) { c = &container; i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { do { } while ((false) && (item_exists())); return *n; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } }; + +template <typename T> +uint qHash(const QList<T> &key, uint seed = 0) + noexcept(noexcept(qHashRange(key.cbegin(), key.cend(), seed))) +{ + return qHashRange(key.cbegin(), key.cend(), seed); +} + +template <typename T> +bool operator<(const QList<T> &lhs, const QList<T> &rhs) + noexcept(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end()))) + +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template <typename T> +inline bool operator>(const QList<T> &lhs, const QList<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template <typename T> +inline bool operator<=(const QList<T> &lhs, const QList<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template <typename T> +inline bool operator>=(const QList<T> &lhs, const QList<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} + + + +# 1 "../../include/QtCore/qbytearraylist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" +# 1 "../../include/QtCore/qlist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 1 +# 1 "../../include/QtCore/qlist.h" 2 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" 2 + + + + +# 1 "../../include/QtCore/qbytearray.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" 2 + + + +typedef QListIterator<QByteArray> QByteArrayListIterator; +typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator; +typedef QList<QByteArray> QByteArrayList; + +namespace QtPrivate { + QByteArray __attribute__((visibility("default"))) QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength); +} + + + + +template <> struct QListSpecialMethods<QByteArray> + +{ + +protected: + ~QListSpecialMethods() {} + +public: + inline QByteArray join() const + { return QtPrivate::QByteArrayList_join(self(), nullptr, 0); } + inline QByteArray join(const QByteArray &sep) const + { return QtPrivate::QByteArrayList_join(self(), sep.constData(), sep.size()); } + inline QByteArray join(char sep) const + { return QtPrivate::QByteArrayList_join(self(), &sep, 1); } + +private: + typedef QList<QByteArray> Self; + Self *self() { return static_cast<Self *>(this); } + const Self *self() const { return static_cast<const Self *>(this); } +}; + + +# 1 "../../include/QtCore/qbytearraylist.h" 2 +# 1090 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qstringlist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" +# 1 "../../include/QtCore/qlist.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 + + + + +# 1 "../../include/QtCore/qalgorithms.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 +# 1 "../../include/QtCore/qregexp.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qregexp.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qregexp.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qregexp.h" 2 + + + +# 1 "../../include/QtCore/qstring.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qregexp.h" 2 + + + + +struct QRegExpPrivate; +class QStringList; +class QRegExp; + +__attribute__((visibility("default"))) uint qHash(const QRegExp &key, uint seed = 0) noexcept; + +class __attribute__((visibility("default"))) QRegExp +{ +public: + enum PatternSyntax { + RegExp, + Wildcard, + FixedString, + RegExp2, + WildcardUnix, + W3CXmlSchema11 }; + enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch }; + + QRegExp(); + explicit QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, + PatternSyntax syntax = RegExp); + QRegExp(const QRegExp &rx); + ~QRegExp(); + QRegExp &operator=(const QRegExp &rx); + + QRegExp &operator=(QRegExp &&other) noexcept { swap(other); return *this; } + + void swap(QRegExp &other) noexcept { qSwap(priv, other.priv); } + + bool operator==(const QRegExp &rx) const; + inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); } + + bool isEmpty() const; + bool isValid() const; + QString pattern() const; + void setPattern(const QString &pattern); + Qt::CaseSensitivity caseSensitivity() const; + void setCaseSensitivity(Qt::CaseSensitivity cs); + PatternSyntax patternSyntax() const; + void setPatternSyntax(PatternSyntax syntax); + + bool isMinimal() const; + void setMinimal(bool minimal); + + bool exactMatch(const QString &str) const; + + int indexIn(const QString &str, int offset = 0, CaretMode caretMode = CaretAtZero) const; + int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const; + int matchedLength() const; + + int captureCount() const; + QStringList capturedTexts() const; + QStringList capturedTexts(); + QString cap(int nth = 0) const; + QString cap(int nth = 0); + int pos(int nth = 0) const; + int pos(int nth = 0); + QString errorString() const; + QString errorString(); + + + static QString escape(const QString &str); + + friend __attribute__((visibility("default"))) uint qHash(const QRegExp &key, uint seed) noexcept; + +private: + QRegExpPrivate *priv; +}; + +template<> class QTypeInfo<QRegExp > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QRegExp)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QRegExp >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QRegExp) }; static inline const char *name() { return "QRegExp"; } }; + + +__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp); +__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &in, QRegExp ®Exp); + + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRegExp &); + + + +# 1 "../../include/QtCore/qregexp.h" 2 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 +# 1 "../../include/QtCore/qstringmatcher.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringmatcher.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringmatcher.h" +# 1 "../../include/QtCore/qstring.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringmatcher.h" 2 + + + + +class QStringMatcherPrivate; + +class __attribute__((visibility("default"))) QStringMatcher +{ +public: + QStringMatcher(); + explicit QStringMatcher(const QString &pattern, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QStringMatcher(const QChar *uc, int len, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QStringMatcher(const QStringMatcher &other); + ~QStringMatcher(); + + QStringMatcher &operator=(const QStringMatcher &other); + + void setPattern(const QString &pattern); + void setCaseSensitivity(Qt::CaseSensitivity cs); + + int indexIn(const QString &str, int from = 0) const; + int indexIn(const QChar *str, int length, int from = 0) const; + QString pattern() const; + inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; } + +private: + QStringMatcherPrivate *d_ptr; + QString q_pattern; + Qt::CaseSensitivity q_cs; + struct Data { + uchar q_skiptable[256]; + const QChar *uc; + int len; + }; + union { + uint q_data[256]; + Data p; + }; +}; + + +# 1 "../../include/QtCore/qstringmatcher.h" 2 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 + + + +class QRegExp; +class QRegularExpression; + +typedef QListIterator<QString> QStringListIterator; +typedef QMutableListIterator<QString> QMutableStringListIterator; + +class QStringList; + + + + +template <> struct QListSpecialMethods<QString> + +{ + +protected: + ~QListSpecialMethods() {} + +public: + inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive); + inline int removeDuplicates(); + + inline QString join(const QString &sep) const; + inline QString join(QChar sep) const; + + inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + + + inline QStringList filter(const QRegExp &rx) const; + inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after); + + + + + inline QStringList filter(const QRegularExpression &re) const; + inline QStringList &replaceInStrings(const QRegularExpression &re, const QString &after); + + + + +private: + inline QStringList *self(); + inline const QStringList *self() const; +}; + + +class QStringList : public QList<QString> +{ + +public: + inline QStringList() noexcept { } + inline explicit QStringList(const QString &i) { append(i); } + inline QStringList(const QList<QString> &l) : QList<QString>(l) { } + + inline QStringList(QList<QString> &&l) noexcept : QList<QString>(std::move(l)) { } + + + inline QStringList(std::initializer_list<QString> args) : QList<QString>(args) { } + + + QStringList &operator=(const QList<QString> &other) + { QList<QString>::operator=(other); return *this; } + + QStringList &operator=(QList<QString> &&other) noexcept + { QList<QString>::operator=(std::move(other)); return *this; } + + + inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline QStringList operator+(const QStringList &other) const + { QStringList n = *this; n += other; return n; } + inline QStringList &operator<<(const QString &str) + { append(str); return *this; } + inline QStringList &operator<<(const QStringList &l) + { *this += l; return *this; } + inline QStringList &operator<<(const QList<QString> &l) + { *this += l; return *this; } + + + inline int indexOf(const QRegExp &rx, int from = 0) const; + inline int lastIndexOf(const QRegExp &rx, int from = -1) const; + inline int indexOf(QRegExp &rx, int from = 0) const; + inline int lastIndexOf(QRegExp &rx, int from = -1) const; + + + + + inline int indexOf(const QRegularExpression &re, int from = 0) const; + inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; + + + + using QList<QString>::indexOf; + using QList<QString>::lastIndexOf; +}; + +template<> class QTypeInfo<QStringList > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QStringList)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QStringList >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QStringList) }; static inline const char *name() { return "QStringList"; } }; + +inline QStringList *QListSpecialMethods<QString>::self() +{ return static_cast<QStringList *>(this); } +inline const QStringList *QListSpecialMethods<QString>::self() const +{ return static_cast<const QStringList *>(this); } + +namespace QtPrivate { + void __attribute__((visibility("default"))) QStringList_sort(QStringList *that, Qt::CaseSensitivity cs); + int __attribute__((visibility("default"))) QStringList_removeDuplicates(QStringList *that); + QString __attribute__((visibility("default"))) QStringList_join(const QStringList *that, const QChar *sep, int seplen); + QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QString &str, + Qt::CaseSensitivity cs); + + bool __attribute__((visibility("default"))) QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs); + void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after, + Qt::CaseSensitivity cs); + + + void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QRegExp &rx, const QString &after); + QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QRegExp &re); + int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, const QRegExp &rx, int from); + int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, const QRegExp &rx, int from); + int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, QRegExp &rx, int from); + int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int from); + + + + + void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QRegularExpression &rx, const QString &after); + QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QRegularExpression &re); + int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, const QRegularExpression &re, int from); + int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, const QRegularExpression &re, int from); + + +} + +inline void QListSpecialMethods<QString>::sort(Qt::CaseSensitivity cs) +{ + QtPrivate::QStringList_sort(self(), cs); +} + +inline int QListSpecialMethods<QString>::removeDuplicates() +{ + return QtPrivate::QStringList_removeDuplicates(self()); +} + +inline QString QListSpecialMethods<QString>::join(const QString &sep) const +{ + return QtPrivate::QStringList_join(self(), sep.constData(), sep.length()); +} + +inline QString QListSpecialMethods<QString>::join(QChar sep) const +{ + return QtPrivate::QStringList_join(self(), &sep, 1); +} + +inline QStringList QListSpecialMethods<QString>::filter(const QString &str, Qt::CaseSensitivity cs) const +{ + return QtPrivate::QStringList_filter(self(), str, cs); +} + +inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const +{ + return QtPrivate::QStringList_contains(this, str, cs); +} + +inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) +{ + QtPrivate::QStringList_replaceInStrings(self(), before, after, cs); + return *self(); +} + +inline QStringList operator+(const QList<QString> &one, const QStringList &other) +{ + QStringList n = one; + n += other; + return n; +} + + +inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QRegExp &rx, const QString &after) +{ + QtPrivate::QStringList_replaceInStrings(self(), rx, after); + return *self(); +} + +inline QStringList QListSpecialMethods<QString>::filter(const QRegExp &rx) const +{ + return QtPrivate::QStringList_filter(self(), rx); +} + +inline int QStringList::indexOf(const QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(const QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} + +inline int QStringList::indexOf(QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} + + + + +inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QRegularExpression &rx, const QString &after) +{ + QtPrivate::QStringList_replaceInStrings(self(), rx, after); + return *self(); +} + +inline QStringList QListSpecialMethods<QString>::filter(const QRegularExpression &rx) const +{ + return QtPrivate::QStringList_filter(self(), rx); +} + +inline int QStringList::indexOf(const QRegularExpression &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(const QRegularExpression &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} + + + + +# 1 "../../include/QtCore/qstringlist.h" 2 +# 1091 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlist.h" 2 +# 1 "../../include/QtCore/qlist.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qmetatype.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 +# 1 "../../include/QtCore/qvarlengtharray.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" +# 1 "../../include/QtCore/qcontainerfwd.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontainerfwd.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontainerfwd.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontainerfwd.h" 2 + + + + +template <class Key, class T> class QCache; +template <class Key, class T> class QHash; +template <class T> class QLinkedList; +template <class T> class QList; +template <class Key, class T> class QMap; +template <class Key, class T> class QMultiHash; +template <class Key, class T> class QMultiMap; +template <class T1, class T2> struct QPair; +template <class T> class QQueue; +template <class T> class QSet; +template <class T> class QStack; +template<class T, int Prealloc = 256> class QVarLengthArray; +template <class T> class QVector; + + +# 1 "../../include/QtCore/qcontainerfwd.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" 2 +# 1 "../../include/QtCore/qglobal.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" 2 +# 1 "../../include/QtCore/qalgorithms.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" 2 +# 56 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvarlengtharray.h" + + + +template<class T, int Prealloc> +class QPodList; + + +template<class T, int Prealloc> +class QVarLengthArray +{ +public: + inline explicit QVarLengthArray(int size = 0); + + inline QVarLengthArray(const QVarLengthArray<T, Prealloc> &other) + : a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array)) + { + append(other.constData(), other.size()); + } + + + QVarLengthArray(std::initializer_list<T> args) + : a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array)) + { + append(args.begin(), args.size()); + } + + + inline ~QVarLengthArray() { + if (QTypeInfo<T>::isComplex) { + T *i = ptr + s; + while (i-- != ptr) + i->~T(); + } + if (ptr != reinterpret_cast<T *>(array)) + free(ptr); + } + inline QVarLengthArray<T, Prealloc> &operator=(const QVarLengthArray<T, Prealloc> &other) + { + if (this != &other) { + clear(); + append(other.constData(), other.size()); + } + return *this; + } + + + QVarLengthArray<T, Prealloc> &operator=(std::initializer_list<T> list) + { + resize(list.size()); + std::copy(list.begin(), list.end(), this->begin()); + return *this; + } + + + inline void removeLast() { + do { } while ((false) && (s > 0)); + realloc(s - 1, a); + } + inline int size() const { return s; } + inline int count() const { return s; } + inline int length() const { return s; } + inline T& first() { do { } while ((false) && (!isEmpty())); return *begin(); } + inline const T& first() const { do { } while ((false) && (!isEmpty())); return *begin(); } + T& last() { do { } while ((false) && (!isEmpty())); return *(end() - 1); } + const T& last() const { do { } while ((false) && (!isEmpty())); return *(end() - 1); } + inline bool isEmpty() const { return (s == 0); } + inline void resize(int size); + inline void clear() { resize(0); } + inline void squeeze(); + + inline int capacity() const { return a; } + inline void reserve(int size); + + inline int indexOf(const T &t, int from = 0) const; + inline int lastIndexOf(const T &t, int from = -1) const; + inline bool contains(const T &t) const; + + inline T &operator[](int idx) { + do { } while ((false) && (idx >= 0 && idx < s)); + return ptr[idx]; + } + inline const T &operator[](int idx) const { + do { } while ((false) && (idx >= 0 && idx < s)); + return ptr[idx]; + } + inline const T &at(int idx) const { return operator[](idx); } + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + inline void append(const T &t) { + if (s == a) + realloc(s, s<<1); + const int idx = s++; + if (QTypeInfo<T>::isComplex) { + new (ptr + idx) T(t); + } else { + ptr[idx] = t; + } + } + void append(const T *buf, int size); + inline QVarLengthArray<T, Prealloc> &operator<<(const T &t) + { append(t); return *this; } + inline QVarLengthArray<T, Prealloc> &operator+=(const T &t) + { append(t); return *this; } + + void prepend(const T &t); + void insert(int i, const T &t); + void insert(int i, int n, const T &t); + void replace(int i, const T &t); + void remove(int i); + void remove(int i, int n); + + + inline T *data() { return ptr; } + inline const T *data() const { return ptr; } + inline const T * constData() const { return ptr; } + typedef int size_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + + + typedef T* iterator; + typedef const T* const_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + inline iterator begin() { return ptr; } + inline const_iterator begin() const { return ptr; } + inline const_iterator cbegin() const { return ptr; } + inline const_iterator constBegin() const { return ptr; } + inline iterator end() { return ptr + s; } + inline const_iterator end() const { return ptr + s; } + inline const_iterator cend() const { return ptr + s; } + inline const_iterator constEnd() const { return ptr + s; } + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + iterator insert(const_iterator before, int n, const T &x); + inline iterator insert(const_iterator before, const T &x) { return insert(before, 1, x); } + iterator erase(const_iterator begin, const_iterator end); + inline iterator erase(const_iterator pos) { return erase(pos, pos+1); } + + + inline bool empty() const { return isEmpty(); } + inline void push_back(const T &t) { append(t); } + inline void pop_back() { removeLast(); } + inline T &front() { return first(); } + inline const T &front() const { return first(); } + inline T &back() { return last(); } + inline const T &back() const { return last(); } + +private: + friend class QPodList<T, Prealloc>; + void realloc(int size, int alloc); + + int a; + int s; + T *ptr; + union { + char array[Prealloc * sizeof(T)]; + qint64 q_for_alignment_1; + double q_for_alignment_2; + }; + + bool isValidIterator(const const_iterator &i) const + { + return (i <= constEnd()) && (constBegin() <= i); + } +}; + +template <class T, int Prealloc> +inline QVarLengthArray<T, Prealloc>::QVarLengthArray(int asize) + : s(asize) { + static_assert(bool(Prealloc > 0), "QVarLengthArray Prealloc must be greater than 0."); + do { } while ((false) && (s >= 0)); + if (s > Prealloc) { + ptr = reinterpret_cast<T *>(malloc(s * sizeof(T))); + do { if (!(ptr)) qBadAlloc(); } while (0); + a = s; + } else { + ptr = reinterpret_cast<T *>(array); + a = Prealloc; + } + if (QTypeInfo<T>::isComplex) { + T *i = ptr + s; + while (i != ptr) + new (--i) T; + } +} + +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::resize(int asize) +{ realloc(asize, qMax(asize, a)); } + +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::reserve(int asize) +{ if (asize > a) realloc(s, asize); } + +template <class T, int Prealloc> +inline int QVarLengthArray<T, Prealloc>::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + s, 0); + if (from < s) { + T *n = ptr + from - 1; + T *e = ptr + s; + while (++n != e) + if (*n == t) + return n - ptr; + } + return -1; +} + +template <class T, int Prealloc> +inline int QVarLengthArray<T, Prealloc>::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += s; + else if (from >= s) + from = s - 1; + if (from >= 0) { + T *b = ptr; + T *n = ptr + from + 1; + while (n != b) { + if (*--n == t) + return n - b; + } + } + return -1; +} + +template <class T, int Prealloc> +inline bool QVarLengthArray<T, Prealloc>::contains(const T &t) const +{ + T *b = ptr; + T *i = ptr + s; + while (i != b) { + if (*--i == t) + return true; + } + return false; +} + +template <class T, int Prealloc> + void QVarLengthArray<T, Prealloc>::append(const T *abuf, int increment) +{ + do { } while ((false) && (abuf)); + if (increment <= 0) + return; + + const int asize = s + increment; + + if (asize >= a) + realloc(s, qMax(s*2, asize)); + + if (QTypeInfo<T>::isComplex) { + + while (s < asize) + new (ptr+(s++)) T(*abuf++); + } else { + memcpy(&ptr[s], abuf, increment * sizeof(T)); + s = asize; + } +} + +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::squeeze() +{ realloc(s, s); } + +template <class T, int Prealloc> + void QVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc) +{ + do { } while ((false) && (aalloc >= asize)); + T *oldPtr = ptr; + int osize = s; + + const int copySize = qMin(asize, osize); + if (aalloc != a) { + if (aalloc > Prealloc) { + T* newPtr = reinterpret_cast<T *>(malloc(aalloc * sizeof(T))); + do { if (!(newPtr)) qBadAlloc(); } while (0); + + ptr = newPtr; + a = aalloc; + } else { + ptr = reinterpret_cast<T *>(array); + a = Prealloc; + } + s = 0; + if (QTypeInfo<T>::isStatic) { + try { + + while (s < copySize) { + new (ptr+s) T(*(oldPtr+s)); + (oldPtr+s)->~T(); + s++; + } + } catch (...) { + + int sClean = s; + while (sClean < osize) + (oldPtr+(sClean++))->~T(); + if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr) + free(oldPtr); + throw; + } + } else { + memcpy(ptr, oldPtr, copySize * sizeof(T)); + } + } + s = copySize; + + if (QTypeInfo<T>::isComplex) { + + while (osize > asize) + (oldPtr+(--osize))->~T(); + } + + if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr) + free(oldPtr); + + if (QTypeInfo<T>::isComplex) { + + while (s < asize) + new (ptr+(s++)) T; + } else { + s = asize; + } +} + +template <class T, int Prealloc> + T QVarLengthArray<T, Prealloc>::value(int i) const +{ + if (uint(i) >= uint(size())) { + return T(); + } + return at(i); +} +template <class T, int Prealloc> + T QVarLengthArray<T, Prealloc>::value(int i, const T &defaultValue) const +{ + return (uint(i) >= uint(size())) ? defaultValue : at(i); +} + +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::insert(int i, const T &t) +{ do { } while ((false) && (i >= 0 && i <= s)); + insert(begin() + i, 1, t); } +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::insert(int i, int n, const T &t) +{ do { } while ((false) && (i >= 0 && i <= s)); + insert(begin() + i, n, t); } +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::remove(int i, int n) +{ do { } while ((false) && (i >= 0 && n >= 0 && i + n <= s)); + erase(begin() + i, begin() + i + n); } +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::remove(int i) +{ do { } while ((false) && (i >= 0 && i < s)); + erase(begin() + i, begin() + i + 1); } +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::prepend(const T &t) +{ insert(begin(), 1, t); } + +template <class T, int Prealloc> +inline void QVarLengthArray<T, Prealloc>::replace(int i, const T &t) +{ + do { } while ((false) && (i >= 0 && i < s)); + const T copy(t); + data()[i] = copy; +} + + +template <class T, int Prealloc> + typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, size_type n, const T &t) +{ + do { } while ((false) && (isValidIterator(before))); + + int offset = int(before - ptr); + if (n != 0) { + resize(s + n); + const T copy(t); + if (QTypeInfo<T>::isStatic) { + T *b = ptr + offset; + T *j = ptr + s; + T *i = j - n; + while (i != b) + *--j = *--i; + i = b + n; + while (i != b) + *--i = copy; + } else { + T *b = ptr + offset; + T *i = b + n; + memmove(i, b, (s - offset - n) * sizeof(T)); + while (i != b) + new (--i) T(copy); + } + } + return ptr + offset; +} + +template <class T, int Prealloc> + typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::erase(const_iterator abegin, const_iterator aend) +{ + do { } while ((false) && (isValidIterator(abegin))); + do { } while ((false) && (isValidIterator(aend))); + + int f = int(abegin - ptr); + int l = int(aend - ptr); + int n = l - f; + if (QTypeInfo<T>::isComplex) { + std::copy(ptr + l, ptr + s, ptr + f); + T *i = ptr + s; + T *b = ptr + s - n; + while (i != b) { + --i; + i->~T(); + } + } else { + memmove(ptr + f, ptr + l, (s - l) * sizeof(T)); + } + s -= n; + return ptr + f; +} + +template <typename T, int Prealloc1, int Prealloc2> +bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r) +{ + if (l.size() != r.size()) + return false; + const T *rb = r.begin(); + const T *b = l.begin(); + const T *e = l.end(); + return std::equal(b, e, rb); +} + +template <typename T, int Prealloc1, int Prealloc2> +bool operator!=(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r) +{ + return !(l == r); +} + +template <typename T, int Prealloc1, int Prealloc2> +bool operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) + noexcept(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end()))) + +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template <typename T, int Prealloc1, int Prealloc2> +inline bool operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template <typename T, int Prealloc1, int Prealloc2> +inline bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template <typename T, int Prealloc1, int Prealloc2> +inline bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} + + +# 1 "../../include/QtCore/qvarlengtharray.h" 2 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 +# 1 "../../include/QtCore/qisenum.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 1 +# 40 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qisenum.h" 2 +# 1 "../../include/QtCore/qisenum.h" 2 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 + +# 1 "../../include/QtCore/qobjectdefs.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" +# 1 "../../include/QtCore/qnamespace.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" 2 + +# 1 "../../include/QtCore/qobjectdefs_impl.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" 1 +# 53 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" + + + +namespace QtPrivate { + template <typename T> struct RemoveRef { typedef T Type; }; + template <typename T> struct RemoveRef<T&> { typedef T Type; }; + template <typename T> struct RemoveConstRef { typedef T Type; }; + template <typename T> struct RemoveConstRef<const T&> { typedef T Type; }; +# 74 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" + template <typename...> struct List {}; + template <typename Head, typename... Tail> struct List<Head, Tail...> { typedef Head Car; typedef List<Tail...> Cdr; }; + template <typename, typename> struct List_Append; + template <typename... L1, typename...L2> struct List_Append<List<L1...>, List<L2...>> { typedef List<L1..., L2...> Value; }; + template <typename L, int N> struct List_Left { + typedef typename List_Append<List<typename L::Car>,typename List_Left<typename L::Cdr, N - 1>::Value>::Value Value; + }; + template <typename L> struct List_Left<L, 0> { typedef List<> Value; }; + + + template <typename L, int N> struct List_Select { typedef typename List_Select<typename L::Cdr, N - 1>::Value Value; }; + template <typename L> struct List_Select<L,0> { typedef typename L::Car Value; }; + + + + + + + + template <typename T> + struct ApplyReturnValue { + void *data; + explicit ApplyReturnValue(void *data_) : data(data_) {} + }; + template<typename T, typename U> + void operator,(const T &value, const ApplyReturnValue<U> &container) { + if (container.data) + *reinterpret_cast<U*>(container.data) = value; + } + + template<typename T, typename U> + void operator,(T &&value, const ApplyReturnValue<U> &container) { + if (container.data) + *reinterpret_cast<U*>(container.data) = value; + } + + template<typename T> + void operator,(T, const ApplyReturnValue<void> &) {} +# 488 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" + template <int...> struct IndexesList {}; + template <typename IndexList, int Right> struct IndexesAppend; + template <int... Left, int Right> struct IndexesAppend<IndexesList<Left...>, Right> + { typedef IndexesList<Left..., Right> Value; }; + template <int N> struct Indexes + { typedef typename IndexesAppend<typename Indexes<N - 1>::Value, N - 1>::Value Value; }; + template <> struct Indexes<0> { typedef IndexesList<> Value; }; + template<typename Func> struct FunctionPointer { enum {ArgumentCount = -1, IsPointerToMemberFunction = false}; }; + + template <typename, typename, typename, typename> struct FunctorCall; + template <int... II, typename... SignalArgs, typename R, typename Function> + struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, Function> { + static void call(Function f, void **arg) { + f((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]); + } + }; + template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj> + struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...)> { + static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) { + (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]); + } + }; + template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj> + struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...) const> { + static void call(SlotRet (Obj::*f)(SlotArgs...) const, Obj *o, void **arg) { + (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]); + } + }; + + template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...)> + { + typedef Obj Object; + typedef List<Args...> Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...); + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template <typename SignalArgs, typename R> + static void call(Function f, Obj *o, void **arg) { + FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...) const> + { + typedef Obj Object; + typedef List<Args...> Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...) const; + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template <typename SignalArgs, typename R> + static void call(Function f, Obj *o, void **arg) { + FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + + template<typename Ret, typename... Args> struct FunctionPointer<Ret (*) (Args...)> + { + typedef List<Args...> Arguments; + typedef Ret ReturnType; + typedef Ret (*Function) (Args...); + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = false}; + template <typename SignalArgs, typename R> + static void call(Function f, void *, void **arg) { + FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, arg); + } + }; + + template<typename Function, int N> struct Functor + { + template <typename SignalArgs, typename R> + static void call(Function &f, void *, void **arg) { + FunctorCall<typename Indexes<N>::Value, SignalArgs, R, Function>::call(f, arg); + } + }; + + + + + + + + template<typename A1, typename A2> struct AreArgumentsCompatible { + static int test(const typename RemoveRef<A2>::Type&); + static char test(...); + static const typename RemoveRef<A1>::Type &dummy(); + enum { value = sizeof(test(dummy())) == sizeof(int) }; + }; + template<typename A1, typename A2> struct AreArgumentsCompatible<A1, A2&> { enum { value = false }; }; + template<typename A> struct AreArgumentsCompatible<A&, A&> { enum { value = true }; }; + + template<typename A> struct AreArgumentsCompatible<void, A> { enum { value = true }; }; + template<typename A> struct AreArgumentsCompatible<A, void> { enum { value = true }; }; + template<> struct AreArgumentsCompatible<void, void> { enum { value = true }; }; +# 591 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" + template <typename List1, typename List2> struct CheckCompatibleArguments { enum { value = false }; }; + template <> struct CheckCompatibleArguments<List<>, List<>> { enum { value = true }; }; + template <typename List1> struct CheckCompatibleArguments<List1, List<>> { enum { value = true }; }; + template <typename Arg1, typename Arg2, typename... Tail1, typename... Tail2> + struct CheckCompatibleArguments<List<Arg1, Tail1...>, List<Arg2, Tail2...>> + { + enum { value = AreArgumentsCompatible<typename RemoveConstRef<Arg1>::Type, typename RemoveConstRef<Arg2>::Type>::value + && CheckCompatibleArguments<List<Tail1...>, List<Tail2...>>::value }; + }; +# 608 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h" + template <typename Functor, typename ArgList> struct ComputeFunctorArgumentCount; + + template <typename Functor, typename ArgList, bool Done> struct ComputeFunctorArgumentCountHelper + { enum { Value = -1 }; }; + template <typename Functor, typename First, typename... ArgList> + struct ComputeFunctorArgumentCountHelper<Functor, List<First, ArgList...>, false> + : ComputeFunctorArgumentCount<Functor, + typename List_Left<List<First, ArgList...>, sizeof...(ArgList)>::Value> {}; + + template <typename Functor, typename... ArgList> struct ComputeFunctorArgumentCount<Functor, List<ArgList...>> + { + template <typename D> static D dummy(); + template <typename F> static auto test(F f) -> decltype(((f.operator()((dummy<ArgList>())...)), int())); + static char test(...); + enum { + Ok = sizeof(test(dummy<Functor>())) == sizeof(int), + Value = Ok ? int(sizeof...(ArgList)) : int(ComputeFunctorArgumentCountHelper<Functor, List<ArgList...>, Ok>::Value) + }; + }; + + + template <typename Functor, typename ArgList> struct FunctorReturnType; + template <typename Functor, typename ... ArgList> struct FunctorReturnType<Functor, List<ArgList...>> { + template <typename D> static D dummy(); + typedef decltype(dummy<Functor>().operator()((dummy<ArgList>())...)) Value; + }; + + +} + + +# 1 "../../include/QtCore/qobjectdefs_impl.h" 2 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" 2 + + + + +class QByteArray; +struct QArrayData; +typedef QArrayData QByteArrayData; + +class QString; +# 167 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" +template <typename T> +inline int qYouForgotTheQ_OBJECT_Macro(T, T) { return 0; } + +template <typename T1, typename T2> +inline void qYouForgotTheQ_OBJECT_Macro(T1, T2) {} +# 270 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" +__attribute__((visibility("default"))) const char *qFlagLocation(const char *method); +# 296 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobjectdefs.h" +class QObject; +class QMetaMethod; +class QMetaEnum; +class QMetaProperty; +class QMetaClassInfo; + + +class __attribute__((visibility("default"))) QGenericArgument +{ +public: + inline QGenericArgument(const char *aName = nullptr, const void *aData = nullptr) + : _data(aData), _name(aName) {} + inline void *data() const { return const_cast<void *>(_data); } + inline const char *name() const { return _name; } + +private: + const void *_data; + const char *_name; +}; + +class __attribute__((visibility("default"))) QGenericReturnArgument: public QGenericArgument +{ +public: + inline QGenericReturnArgument(const char *aName = nullptr, void *aData = nullptr) + : QGenericArgument(aName, aData) + {} +}; + +template <class T> +class QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, const T &aData) + : QGenericArgument(aName, static_cast<const void *>(&aData)) + {} +}; +template <class T> +class QArgument<T &>: public QGenericArgument +{ +public: + inline QArgument(const char *aName, T &aData) + : QGenericArgument(aName, static_cast<const void *>(&aData)) + {} +}; + + +template <typename T> +class QReturnArgument: public QGenericReturnArgument +{ +public: + inline QReturnArgument(const char *aName, T &aData) + : QGenericReturnArgument(aName, static_cast<void *>(&aData)) + {} +}; + +struct __attribute__((visibility("default"))) QMetaObject +{ + class Connection; + const char *className() const; + const QMetaObject *superClass() const; + + bool inherits(const QMetaObject *metaObject) const noexcept; + QObject *cast(QObject *obj) const; + const QObject *cast(const QObject *obj) const; + + + QString tr(const char *s, const char *c, int n = -1) const; + + + int methodOffset() const; + int enumeratorOffset() const; + int propertyOffset() const; + int classInfoOffset() const; + + int constructorCount() const; + int methodCount() const; + int enumeratorCount() const; + int propertyCount() const; + int classInfoCount() const; + + int indexOfConstructor(const char *constructor) const; + int indexOfMethod(const char *method) const; + int indexOfSignal(const char *signal) const; + int indexOfSlot(const char *slot) const; + int indexOfEnumerator(const char *name) const; + int indexOfProperty(const char *name) const; + int indexOfClassInfo(const char *name) const; + + QMetaMethod constructor(int index) const; + QMetaMethod method(int index) const; + QMetaEnum enumerator(int index) const; + QMetaProperty property(int index) const; + QMetaClassInfo classInfo(int index) const; + QMetaProperty userProperty() const; + + static bool checkConnectArgs(const char *signal, const char *method); + static bool checkConnectArgs(const QMetaMethod &signal, + const QMetaMethod &method); + static QByteArray normalizedSignature(const char *method); + static QByteArray normalizedType(const char *type); + + + static Connection connect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index, + int type = 0, int *types = nullptr); + + static bool disconnect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + static bool disconnectOne(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + + static void connectSlotsByName(QObject *o); + + + static void activate(QObject *sender, int signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); + static void activate(QObject *sender, int signal_offset, int local_signal_index, void **argv); + + static bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(nullptr), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()); + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(nullptr), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3, + val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType type, + QGenericArgument val0 = QGenericArgument(nullptr), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, + val3, val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericArgument val0 = QGenericArgument(nullptr), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0, + val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + QObject *newInstance(QGenericArgument val0 = QGenericArgument(nullptr), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const; + + enum Call { + InvokeMetaMethod, + ReadProperty, + WriteProperty, + ResetProperty, + QueryPropertyDesignable, + QueryPropertyScriptable, + QueryPropertyStored, + QueryPropertyEditable, + QueryPropertyUser, + CreateInstance, + IndexOfMethod, + RegisterPropertyMetaType, + RegisterMethodArgumentMetaType + }; + + int static_metacall(Call, int, void **) const; + static int metacall(QObject *, Call, int, void **); + + struct { + const QMetaObject *superdata; + const QByteArrayData *stringdata; + const uint *data; + typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call, int, void **); + StaticMetacallFunction static_metacall; + const QMetaObject * const *relatedMetaObjects; + void *extradata; + } d; +}; + +class __attribute__((visibility("default"))) QMetaObject::Connection { + void *d_ptr; + explicit Connection(void *data) : d_ptr(data) { } + friend class QObject; + friend class QObjectPrivate; + friend struct QMetaObject; + bool isConnected_helper() const; +public: + ~Connection(); + Connection(); + Connection(const Connection &other); + Connection &operator=(const Connection &other); + + + + typedef void *Connection::*RestrictedBool; + operator RestrictedBool() const { return d_ptr && isConnected_helper() ? &Connection::d_ptr : nullptr; } + + + + inline Connection(Connection &&o) : d_ptr(o.d_ptr) { o.d_ptr = nullptr; } + inline Connection &operator=(Connection &&other) + { qSwap(d_ptr, other.d_ptr); return *this; } + +}; + +inline const QMetaObject *QMetaObject::superClass() const +{ return d.superdata; } + +namespace QtPrivate { + + template <typename Object> struct HasQ_OBJECT_Macro { + template <typename T> + static char test(int (T::*)(QMetaObject::Call, int, void **)); + static int test(int (Object::*)(QMetaObject::Call, int, void **)); + enum { Value = sizeof(test(&Object::qt_metacall)) == sizeof(int) }; + }; +} + + +# 1 "../../include/QtCore/qobjectdefs.h" 2 +# 52 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 1 3 +# 58 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 3 + +# 59 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 3 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 1 3 +# 61 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/aligned_buffer.h" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/aligned_buffer.h" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/aligned_buffer.h" 3 + + + + + + + + +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/ext/aligned_buffer.h" 3 +namespace __gnu_cxx +{ + + + + + template<typename _Tp> + struct __aligned_membuf + { + + + + struct _Tp2 { _Tp _M_t; }; + + alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; + + __aligned_membuf() = default; + + + __aligned_membuf(std::nullptr_t) { } + + void* + _M_addr() noexcept + { return static_cast<void*>(&_M_storage); } + + const void* + _M_addr() const noexcept + { return static_cast<const void*>(&_M_storage); } + + _Tp* + _M_ptr() noexcept + { return static_cast<_Tp*>(_M_addr()); } + + const _Tp* + _M_ptr() const noexcept + { return static_cast<const _Tp*>(_M_addr()); } + }; + + + + + + + template<typename _Tp> + struct __aligned_buffer + : std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value> + { + typename + std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value>::type + _M_storage; + + __aligned_buffer() = default; + + + __aligned_buffer(std::nullptr_t) { } + + void* + _M_addr() noexcept + { + return static_cast<void*>(&_M_storage); + } + + const void* + _M_addr() const noexcept + { + return static_cast<const void*>(&_M_storage); + } + + _Tp* + _M_ptr() noexcept + { return static_cast<_Tp*>(_M_addr()); } + + const _Tp* + _M_ptr() const noexcept + { return static_cast<const _Tp*>(_M_addr()); } + }; + +} +# 70 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 2 3 + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 92 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + enum _Rb_tree_color { _S_red = false, _S_black = true }; + + struct _Rb_tree_node_base + { + typedef _Rb_tree_node_base* _Base_ptr; + typedef const _Rb_tree_node_base* _Const_Base_ptr; + + _Rb_tree_color _M_color; + _Base_ptr _M_parent; + _Base_ptr _M_left; + _Base_ptr _M_right; + + static _Base_ptr + _S_minimum(_Base_ptr __x) noexcept + { + while (__x->_M_left != 0) __x = __x->_M_left; + return __x; + } + + static _Const_Base_ptr + _S_minimum(_Const_Base_ptr __x) noexcept + { + while (__x->_M_left != 0) __x = __x->_M_left; + return __x; + } + + static _Base_ptr + _S_maximum(_Base_ptr __x) noexcept + { + while (__x->_M_right != 0) __x = __x->_M_right; + return __x; + } + + static _Const_Base_ptr + _S_maximum(_Const_Base_ptr __x) noexcept + { + while (__x->_M_right != 0) __x = __x->_M_right; + return __x; + } + }; + + template<typename _Val> + struct _Rb_tree_node : public _Rb_tree_node_base + { + typedef _Rb_tree_node<_Val>* _Link_type; +# 149 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + __gnu_cxx::__aligned_membuf<_Val> _M_storage; + + _Val* + _M_valptr() + { return _M_storage._M_ptr(); } + + const _Val* + _M_valptr() const + { return _M_storage._M_ptr(); } + + }; + + __attribute__ ((__pure__)) _Rb_tree_node_base* + _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); + + __attribute__ ((__pure__)) const _Rb_tree_node_base* + _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); + + __attribute__ ((__pure__)) _Rb_tree_node_base* + _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); + + __attribute__ ((__pure__)) const _Rb_tree_node_base* + _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); + + template<typename _Tp> + struct _Rb_tree_iterator + { + typedef _Tp value_type; + typedef _Tp& reference; + typedef _Tp* pointer; + + typedef bidirectional_iterator_tag iterator_category; + typedef ptrdiff_t difference_type; + + typedef _Rb_tree_iterator<_Tp> _Self; + typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; + typedef _Rb_tree_node<_Tp>* _Link_type; + + _Rb_tree_iterator() noexcept + : _M_node() { } + + explicit + _Rb_tree_iterator(_Base_ptr __x) noexcept + : _M_node(__x) { } + + reference + operator*() const noexcept + { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } + + pointer + operator->() const noexcept + { return static_cast<_Link_type> (_M_node)->_M_valptr(); } + + _Self& + operator++() noexcept + { + _M_node = _Rb_tree_increment(_M_node); + return *this; + } + + _Self + operator++(int) noexcept + { + _Self __tmp = *this; + _M_node = _Rb_tree_increment(_M_node); + return __tmp; + } + + _Self& + operator--() noexcept + { + _M_node = _Rb_tree_decrement(_M_node); + return *this; + } + + _Self + operator--(int) noexcept + { + _Self __tmp = *this; + _M_node = _Rb_tree_decrement(_M_node); + return __tmp; + } + + bool + operator==(const _Self& __x) const noexcept + { return _M_node == __x._M_node; } + + bool + operator!=(const _Self& __x) const noexcept + { return _M_node != __x._M_node; } + + _Base_ptr _M_node; + }; + + template<typename _Tp> + struct _Rb_tree_const_iterator + { + 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 _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() noexcept + : _M_node() { } + + explicit + _Rb_tree_const_iterator(_Base_ptr __x) noexcept + : _M_node(__x) { } + + _Rb_tree_const_iterator(const iterator& __it) noexcept + : _M_node(__it._M_node) { } + + iterator + _M_const_cast() const noexcept + { return iterator(const_cast<typename iterator::_Base_ptr>(_M_node)); } + + reference + operator*() const noexcept + { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } + + pointer + operator->() const noexcept + { return static_cast<_Link_type>(_M_node)->_M_valptr(); } + + _Self& + operator++() noexcept + { + _M_node = _Rb_tree_increment(_M_node); + return *this; + } + + _Self + operator++(int) noexcept + { + _Self __tmp = *this; + _M_node = _Rb_tree_increment(_M_node); + return __tmp; + } + + _Self& + operator--() noexcept + { + _M_node = _Rb_tree_decrement(_M_node); + return *this; + } + + _Self + operator--(int) noexcept + { + _Self __tmp = *this; + _M_node = _Rb_tree_decrement(_M_node); + return __tmp; + } + + bool + operator==(const _Self& __x) const noexcept + { return _M_node == __x._M_node; } + + bool + operator!=(const _Self& __x) const noexcept + { return _M_node != __x._M_node; } + + _Base_ptr _M_node; + }; + + template<typename _Val> + inline bool + operator==(const _Rb_tree_iterator<_Val>& __x, + const _Rb_tree_const_iterator<_Val>& __y) noexcept + { return __x._M_node == __y._M_node; } + + template<typename _Val> + inline bool + operator!=(const _Rb_tree_iterator<_Val>& __x, + const _Rb_tree_const_iterator<_Val>& __y) 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* + _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, + _Rb_tree_node_base& __header) throw (); + + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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; + + typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; + + protected: + typedef _Rb_tree_node_base* _Base_ptr; + typedef const _Rb_tree_node_base* _Const_Base_ptr; + typedef _Rb_tree_node<_Val>* _Link_type; + typedef const _Rb_tree_node<_Val>* _Const_Link_type; + + private: + + + struct _Reuse_or_alloc_node + { + _Reuse_or_alloc_node(_Rb_tree& __t) + : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) + { + if (_M_root) + { + _M_root->_M_parent = 0; + + if (_M_nodes->_M_left) + _M_nodes = _M_nodes->_M_left; + } + else + _M_nodes = 0; + } + + + _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; + + + ~_Reuse_or_alloc_node() + { _M_t._M_erase(static_cast<_Link_type>(_M_root)); } + + template<typename _Arg> + _Link_type + + + + operator()(_Arg&& __arg) + + { + _Link_type __node = static_cast<_Link_type>(_M_extract()); + if (__node) + { + _M_t._M_destroy_node(__node); + _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); + return __node; + } + + return _M_t._M_create_node(std::forward<_Arg>(__arg)); + } + + private: + _Base_ptr + _M_extract() + { + if (!_M_nodes) + return _M_nodes; + + _Base_ptr __node = _M_nodes; + _M_nodes = _M_nodes->_M_parent; + if (_M_nodes) + { + if (_M_nodes->_M_right == __node) + { + _M_nodes->_M_right = 0; + + if (_M_nodes->_M_left) + { + _M_nodes = _M_nodes->_M_left; + + while (_M_nodes->_M_right) + _M_nodes = _M_nodes->_M_right; + + if (_M_nodes->_M_left) + _M_nodes = _M_nodes->_M_left; + } + } + else + _M_nodes->_M_left = 0; + } + else + _M_root = 0; + + return __node; + } + + _Base_ptr _M_root; + _Base_ptr _M_nodes; + _Rb_tree& _M_t; + }; + + + + struct _Alloc_node + { + _Alloc_node(_Rb_tree& __t) + : _M_t(__t) { } + + template<typename _Arg> + _Link_type + + + + operator()(_Arg&& __arg) const + + { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } + + private: + _Rb_tree& _M_t; + }; + + public: + typedef _Key key_type; + typedef _Val value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Alloc allocator_type; + + _Node_allocator& + _M_get_Node_allocator() noexcept + { return *static_cast<_Node_allocator*>(&this->_M_impl); } + + const _Node_allocator& + _M_get_Node_allocator() const noexcept + { return *static_cast<const _Node_allocator*>(&this->_M_impl); } + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_get_Node_allocator()); } + + protected: + _Link_type + _M_get_node() + { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); } + + void + _M_put_node(_Link_type __p) noexcept + { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } +# 522 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + template<typename... _Args> + void + _M_construct_node(_Link_type __node, _Args&&... __args) + { + try + { + ::new(__node) _Rb_tree_node<_Val>; + _Alloc_traits::construct(_M_get_Node_allocator(), + __node->_M_valptr(), + std::forward<_Args>(__args)...); + } + catch(...) + { + __node->~_Rb_tree_node<_Val>(); + _M_put_node(__node); + throw; + } + } + + template<typename... _Args> + _Link_type + _M_create_node(_Args&&... __args) + { + _Link_type __tmp = _M_get_node(); + _M_construct_node(__tmp, std::forward<_Args>(__args)...); + return __tmp; + } + + void + _M_destroy_node(_Link_type __p) noexcept + { + _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); + __p->~_Rb_tree_node<_Val>(); + } + + + void + _M_drop_node(_Link_type __p) noexcept + { + _M_destroy_node(__p); + _M_put_node(__p); + } + + template<typename _NodeGen> + _Link_type + _M_clone_node(_Const_Link_type __x, _NodeGen& __node_gen) + { + _Link_type __tmp = __node_gen(*__x->_M_valptr()); + __tmp->_M_color = __x->_M_color; + __tmp->_M_left = 0; + __tmp->_M_right = 0; + return __tmp; + } + + protected: + + template<typename _Key_compare, + bool = __is_pod(_Key_compare)> + struct _Rb_tree_impl : public _Node_allocator + { + _Key_compare _M_key_compare; + _Rb_tree_node_base _M_header; + size_type _M_node_count; + + _Rb_tree_impl() + : _Node_allocator(), _M_key_compare(), _M_header(), + _M_node_count(0) + { _M_initialize(); } + + _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a) + : _Node_allocator(__a), _M_key_compare(__comp), _M_header(), + _M_node_count(0) + { _M_initialize(); } + + + _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) + : _Node_allocator(std::move(__a)), _M_key_compare(__comp), + _M_header(), _M_node_count(0) + { _M_initialize(); } + + + void + _M_reset() + { + this->_M_header._M_parent = 0; + this->_M_header._M_left = &this->_M_header; + this->_M_header._M_right = &this->_M_header; + this->_M_node_count = 0; + } + + private: + void + _M_initialize() + { + this->_M_header._M_color = _S_red; + this->_M_header._M_parent = 0; + this->_M_header._M_left = &this->_M_header; + this->_M_header._M_right = &this->_M_header; + } + }; + + _Rb_tree_impl<_Compare> _M_impl; + + protected: + _Base_ptr& + _M_root() noexcept + { return this->_M_impl._M_header._M_parent; } + + _Const_Base_ptr + _M_root() const noexcept + { return this->_M_impl._M_header._M_parent; } + + _Base_ptr& + _M_leftmost() noexcept + { return this->_M_impl._M_header._M_left; } + + _Const_Base_ptr + _M_leftmost() const noexcept + { return this->_M_impl._M_header._M_left; } + + _Base_ptr& + _M_rightmost() noexcept + { return this->_M_impl._M_header._M_right; } + + _Const_Base_ptr + _M_rightmost() const noexcept + { return this->_M_impl._M_header._M_right; } + + _Link_type + _M_begin() noexcept + { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } + + _Const_Link_type + _M_begin() const noexcept + { + return static_cast<_Const_Link_type> + (this->_M_impl._M_header._M_parent); + } + + _Link_type + _M_end() noexcept + { return reinterpret_cast<_Link_type>(&this->_M_impl._M_header); } + + _Const_Link_type + _M_end() const noexcept + { return reinterpret_cast<_Const_Link_type>(&this->_M_impl._M_header); } + + static const_reference + _S_value(_Const_Link_type __x) + { return *__x->_M_valptr(); } + + static const _Key& + _S_key(_Const_Link_type __x) + { return _KeyOfValue()(_S_value(__x)); } + + static _Link_type + _S_left(_Base_ptr __x) noexcept + { return static_cast<_Link_type>(__x->_M_left); } + + static _Const_Link_type + _S_left(_Const_Base_ptr __x) noexcept + { return static_cast<_Const_Link_type>(__x->_M_left); } + + static _Link_type + _S_right(_Base_ptr __x) noexcept + { return static_cast<_Link_type>(__x->_M_right); } + + static _Const_Link_type + _S_right(_Const_Base_ptr __x) noexcept + { return static_cast<_Const_Link_type>(__x->_M_right); } + + static const_reference + _S_value(_Const_Base_ptr __x) + { return *static_cast<_Const_Link_type>(__x)->_M_valptr(); } + + static const _Key& + _S_key(_Const_Base_ptr __x) + { return _KeyOfValue()(_S_value(__x)); } + + static _Base_ptr + _S_minimum(_Base_ptr __x) noexcept + { return _Rb_tree_node_base::_S_minimum(__x); } + + static _Const_Base_ptr + _S_minimum(_Const_Base_ptr __x) noexcept + { return _Rb_tree_node_base::_S_minimum(__x); } + + static _Base_ptr + _S_maximum(_Base_ptr __x) noexcept + { return _Rb_tree_node_base::_S_maximum(__x); } + + static _Const_Base_ptr + _S_maximum(_Const_Base_ptr __x) noexcept + { return _Rb_tree_node_base::_S_maximum(__x); } + + public: + typedef _Rb_tree_iterator<value_type> iterator; + typedef _Rb_tree_const_iterator<value_type> const_iterator; + + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + private: + pair<_Base_ptr, _Base_ptr> + _M_get_insert_unique_pos(const key_type& __k); + + pair<_Base_ptr, _Base_ptr> + _M_get_insert_equal_pos(const key_type& __k); + + pair<_Base_ptr, _Base_ptr> + _M_get_insert_hint_unique_pos(const_iterator __pos, + const key_type& __k); + + pair<_Base_ptr, _Base_ptr> + _M_get_insert_hint_equal_pos(const_iterator __pos, + const key_type& __k); + + + template<typename _Arg, typename _NodeGen> + 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<typename _Arg> + iterator + _M_insert_lower(_Base_ptr __y, _Arg&& __v); + + template<typename _Arg> + iterator + _M_insert_equal_lower(_Arg&& __x); + + iterator + _M_insert_lower_node(_Base_ptr __p, _Link_type __z); + + iterator + _M_insert_equal_lower_node(_Link_type __z); +# 775 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + template<typename _NodeGen> + _Link_type + _M_copy(_Const_Link_type __x, _Link_type __p, _NodeGen&); + + _Link_type + _M_copy(_Const_Link_type __x, _Link_type __p) + { + _Alloc_node __an(*this); + return _M_copy(__x, __p, __an); + } + + void + _M_erase(_Link_type __x); + + iterator + _M_lower_bound(_Link_type __x, _Link_type __y, + const _Key& __k); + + const_iterator + _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y, + const _Key& __k) const; + + iterator + _M_upper_bound(_Link_type __x, _Link_type __y, + const _Key& __k); + + const_iterator + _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y, + const _Key& __k) const; + + public: + + _Rb_tree() { } + + _Rb_tree(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_impl(__comp, _Node_allocator(__a)) { } + + _Rb_tree(const _Rb_tree& __x) + : _M_impl(__x._M_impl._M_key_compare, + _Alloc_traits::_S_select_on_copy(__x._M_get_Node_allocator())) + { + if (__x._M_root() != 0) + { + _M_root() = _M_copy(__x._M_begin(), _M_end()); + _M_leftmost() = _S_minimum(_M_root()); + _M_rightmost() = _S_maximum(_M_root()); + _M_impl._M_node_count = __x._M_impl._M_node_count; + } + } + + + _Rb_tree(const allocator_type& __a) + : _M_impl(_Compare(), _Node_allocator(__a)) + { } + + _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) + : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) + { + if (__x._M_root() != nullptr) + { + _M_root() = _M_copy(__x._M_begin(), _M_end()); + _M_leftmost() = _S_minimum(_M_root()); + _M_rightmost() = _S_maximum(_M_root()); + _M_impl._M_node_count = __x._M_impl._M_node_count; + } + } + + _Rb_tree(_Rb_tree&& __x) + : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator()) + { + if (__x._M_root() != 0) + _M_move_data(__x, std::true_type()); + } + + _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) + : _Rb_tree(std::move(__x), _Node_allocator(__a)) + { } + + _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a); + + + ~_Rb_tree() noexcept + { _M_erase(_M_begin()); } + + _Rb_tree& + operator=(const _Rb_tree& __x); + + + _Compare + key_comp() const + { return _M_impl._M_key_compare; } + + iterator + begin() noexcept + { return iterator(this->_M_impl._M_header._M_left); } + + const_iterator + begin() const noexcept + { return const_iterator(this->_M_impl._M_header._M_left); } + + iterator + end() noexcept + { return iterator(&this->_M_impl._M_header); } + + const_iterator + end() const noexcept + { return const_iterator(&this->_M_impl._M_header); } + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + bool + empty() const noexcept + { return _M_impl._M_node_count == 0; } + + size_type + size() const noexcept + { return _M_impl._M_node_count; } + + size_type + max_size() const noexcept + { return _Alloc_traits::max_size(_M_get_Node_allocator()); } + + void + + swap(_Rb_tree& __t) noexcept(_Alloc_traits::_S_nothrow_swap()); + + + + + + + template<typename _Arg> + pair<iterator, bool> + _M_insert_unique(_Arg&& __x); + + template<typename _Arg> + iterator + _M_insert_equal(_Arg&& __x); + + template<typename _Arg, typename _NodeGen> + iterator + _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); + + template<typename _Arg> + iterator + _M_insert_unique_(const_iterator __pos, _Arg&& __x) + { + _Alloc_node __an(*this); + return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); + } + + template<typename _Arg, typename _NodeGen> + iterator + _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); + + template<typename _Arg> + iterator + _M_insert_equal_(const_iterator __pos, _Arg&& __x) + { + _Alloc_node __an(*this); + return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); + } + + template<typename... _Args> + pair<iterator, bool> + _M_emplace_unique(_Args&&... __args); + + template<typename... _Args> + iterator + _M_emplace_equal(_Args&&... __args); + + template<typename... _Args> + iterator + _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); + + template<typename... _Args> + iterator + _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); +# 999 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + template<typename _InputIterator> + void + _M_insert_unique(_InputIterator __first, _InputIterator __last); + + template<typename _InputIterator> + void + _M_insert_equal(_InputIterator __first, _InputIterator __last); + + private: + void + _M_erase_aux(const_iterator __position); + + void + _M_erase_aux(const_iterator __first, const_iterator __last); + + public: + + + + __attribute ((__abi_tag__ ("cxx11"))) + iterator + erase(const_iterator __position) + { + const_iterator __result = __position; + ++__result; + _M_erase_aux(__position); + return __result._M_const_cast(); + } + + + __attribute ((__abi_tag__ ("cxx11"))) + iterator + erase(iterator __position) + { + iterator __result = __position; + ++__result; + _M_erase_aux(__position); + return __result; + } +# 1047 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + size_type + erase(const key_type& __x); + + + + + __attribute ((__abi_tag__ ("cxx11"))) + iterator + erase(const_iterator __first, const_iterator __last) + { + _M_erase_aux(__first, __last); + return __last._M_const_cast(); + } +# 1069 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_tree.h" 3 + void + erase(const key_type* __first, const key_type* __last); + + void + clear() noexcept + { + _M_erase(_M_begin()); + _M_impl._M_reset(); + } + + + iterator + find(const key_type& __k); + + const_iterator + find(const key_type& __k) const; + + size_type + count(const key_type& __k) const; + + iterator + lower_bound(const key_type& __k) + { return _M_lower_bound(_M_begin(), _M_end(), __k); } + + const_iterator + lower_bound(const key_type& __k) const + { return _M_lower_bound(_M_begin(), _M_end(), __k); } + + iterator + upper_bound(const key_type& __k) + { return _M_upper_bound(_M_begin(), _M_end(), __k); } + + const_iterator + upper_bound(const key_type& __k) const + { return _M_upper_bound(_M_begin(), _M_end(), __k); } + + pair<iterator, iterator> + equal_range(const key_type& __k); + + pair<const_iterator, const_iterator> + equal_range(const key_type& __k) const; + + + template<typename _Cmp, typename _Kt, typename = __void_t<>> + struct __is_transparent { }; + + template<typename _Cmp, typename _Kt> + struct + __is_transparent<_Cmp, _Kt, __void_t<typename _Cmp::is_transparent>> + { typedef void type; }; + + static auto _S_iter(_Link_type __x) { return iterator(__x); } + + static auto _S_iter(_Const_Link_type __x) { return const_iterator(__x); } + + template<typename _Cmp, typename _Link, typename _Kt> + static auto + _S_lower_bound_tr(_Cmp& __cmp, _Link __x, _Link __y, const _Kt& __k) + { + while (__x != 0) + if (!__cmp(_S_key(__x), __k)) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return _S_iter(__y); + } + + template<typename _Cmp, typename _Link, typename _Kt> + static auto + _S_upper_bound_tr(_Cmp& __cmp, _Link __x, _Link __y, const _Kt& __k) + { + while (__x != 0) + if (__cmp(__k, _S_key(__x))) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return _S_iter(__y); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + iterator + _M_find_tr(const _Kt& __k) + { + auto& __cmp = _M_impl._M_key_compare; + auto __j = _S_lower_bound_tr(__cmp, _M_begin(), _M_end(), __k); + return (__j == end() || __cmp(__k, _S_key(__j._M_node))) + ? end() : __j; + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + const_iterator + _M_find_tr(const _Kt& __k) const + { + auto& __cmp = _M_impl._M_key_compare; + auto __j = _S_lower_bound_tr(__cmp, _M_begin(), _M_end(), __k); + return (__j == end() || __cmp(__k, _S_key(__j._M_node))) + ? end() : __j; + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + size_type + _M_count_tr(const _Kt& __k) const + { + auto __p = _M_equal_range_tr(__k); + return std::distance(__p.first, __p.second); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + iterator + _M_lower_bound_tr(const _Kt& __k) + { + auto& __cmp = _M_impl._M_key_compare; + return _S_lower_bound_tr(__cmp, _M_begin(), _M_end(), __k); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + const_iterator + _M_lower_bound_tr(const _Kt& __k) const + { + auto& __cmp = _M_impl._M_key_compare; + return _S_lower_bound_tr(__cmp, _M_begin(), _M_end(), __k); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + iterator + _M_upper_bound_tr(const _Kt& __k) + { + auto& __cmp = _M_impl._M_key_compare; + return _S_upper_bound_tr(__cmp, _M_begin(), _M_end(), __k); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + const_iterator + _M_upper_bound_tr(const _Kt& __k) const + { + auto& __cmp = _M_impl._M_key_compare; + return _S_upper_bound_tr(__cmp, _M_begin(), _M_end(), __k); + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + pair<iterator, iterator> + _M_equal_range_tr(const _Kt& __k) + { + auto __low = _M_lower_bound_tr(__k); + auto __high = __low; + auto& __cmp = _M_impl._M_key_compare; + while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) + ++__high; + return { __low, __high }; + } + + template<typename _Kt, + typename _Req = typename __is_transparent<_Compare, _Kt>::type> + pair<const_iterator, const_iterator> + _M_equal_range_tr(const _Kt& __k) const + { + auto __low = _M_lower_bound_tr(__k); + auto __high = __low; + auto& __cmp = _M_impl._M_key_compare; + while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) + ++__high; + return { __low, __high }; + } + + + + bool + __rb_verify() const; + + + _Rb_tree& + operator=(_Rb_tree&&) noexcept(_Alloc_traits::_S_nothrow_move()); + + template<typename _Iterator> + void + _M_assign_unique(_Iterator, _Iterator); + + template<typename _Iterator> + void + _M_assign_equal(_Iterator, _Iterator); + + private: + + void + _M_move_data(_Rb_tree&, std::true_type); + + + + void + _M_move_data(_Rb_tree&, std::false_type); + + }; + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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.size() == __y.size() + && std::equal(__x.begin(), __x.end(), __y.begin()); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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 std::lexicographical_compare(__x.begin(), __x.end(), + __y.begin(), __y.end()); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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 _Key, typename _Val, typename _KeyOfValue, + 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 _Key, typename _Val, typename _KeyOfValue, + 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 _Key, typename _Val, typename _KeyOfValue, + 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 _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + inline void + swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) + { __x.swap(__y); } + + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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)) + { + using __eq = integral_constant<bool, _Alloc_traits::_S_always_equal()>; + if (__x._M_root() != nullptr) + _M_move_data(__x, __eq()); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_move_data(_Rb_tree& __x, std::true_type) + { + _M_root() = __x._M_root(); + _M_leftmost() = __x._M_leftmost(); + _M_rightmost() = __x._M_rightmost(); + _M_root()->_M_parent = _M_end(); + + __x._M_root() = 0; + __x._M_leftmost() = __x._M_end(); + __x._M_rightmost() = __x._M_end(); + + this->_M_impl._M_node_count = __x._M_impl._M_node_count; + __x._M_impl._M_node_count = 0; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_move_data(_Rb_tree& __x, std::false_type) + { + if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) + _M_move_data(__x, std::true_type()); + else + { + _Alloc_node __an(*this); + auto __lbd = + [&__an](const value_type& __cval) + { + auto& __val = const_cast<value_type&>(__cval); + return __an(std::move_if_noexcept(__val)); + }; + _M_root() = _M_copy(__x._M_begin(), _M_end(), __lbd); + _M_leftmost() = _S_minimum(_M_root()); + _M_rightmost() = _S_maximum(_M_root()); + _M_impl._M_node_count = __x._M_impl._M_node_count; + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + operator=(_Rb_tree&& __x) + noexcept(_Alloc_traits::_S_nothrow_move()) + { + _M_impl._M_key_compare = __x._M_impl._M_key_compare; + if (_Alloc_traits::_S_propagate_on_move_assign() + || _Alloc_traits::_S_always_equal() + || _M_get_Node_allocator() == __x._M_get_Node_allocator()) + { + clear(); + if (__x._M_root() != nullptr) + _M_move_data(__x, std::true_type()); + std::__alloc_on_move(_M_get_Node_allocator(), + __x._M_get_Node_allocator()); + return *this; + } + + + + _Reuse_or_alloc_node __roan(*this); + _M_impl._M_reset(); + if (__x._M_root() != nullptr) + { + auto __lbd = + [&__roan](const value_type& __cval) + { + auto& __val = const_cast<value_type&>(__cval); + return __roan(std::move_if_noexcept(__val)); + }; + _M_root() = _M_copy(__x._M_begin(), _M_end(), __lbd); + _M_leftmost() = _S_minimum(_M_root()); + _M_rightmost() = _S_maximum(_M_root()); + _M_impl._M_node_count = __x._M_impl._M_node_count; + __x.clear(); + } + return *this; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename _Iterator> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_assign_unique(_Iterator __first, _Iterator __last) + { + _Reuse_or_alloc_node __roan(*this); + _M_impl._M_reset(); + for (; __first != __last; ++__first) + _M_insert_unique_(end(), *__first, __roan); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename _Iterator> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_assign_equal(_Iterator __first, _Iterator __last) + { + _Reuse_or_alloc_node __roan(*this); + _M_impl._M_reset(); + for (; __first != __last; ++__first) + _M_insert_equal_(end(), *__first, __roan); + } + + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + operator=(const _Rb_tree& __x) + { + if (this != &__x) + { + + + if (_Alloc_traits::_S_propagate_on_copy_assign()) + { + auto& __this_alloc = this->_M_get_Node_allocator(); + auto& __that_alloc = __x._M_get_Node_allocator(); + if (!_Alloc_traits::_S_always_equal() + && __this_alloc != __that_alloc) + { + + + clear(); + std::__alloc_on_copy(__this_alloc, __that_alloc); + } + } + + + _Reuse_or_alloc_node __roan(*this); + _M_impl._M_reset(); + _M_impl._M_key_compare = __x._M_impl._M_key_compare; + if (__x._M_root() != 0) + { + _M_root() = _M_copy(__x._M_begin(), _M_end(), __roan); + _M_leftmost() = _S_minimum(_M_root()); + _M_rightmost() = _S_maximum(_M_root()); + _M_impl._M_node_count = __x._M_impl._M_node_count; + } + } + + return *this; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg, typename _NodeGen> + + + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_insert_(_Base_ptr __x, _Base_ptr __p, + + _Arg&& __v, + + + + _NodeGen& __node_gen) + { + bool __insert_left = (__x != 0 || __p == _M_end() + || _M_impl._M_key_compare(_KeyOfValue()(__v), + _S_key(__p))); + + _Link_type __z = __node_gen(std::forward<_Arg>(__v)); + + _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, + this->_M_impl._M_header); + ++_M_impl._M_node_count; + return iterator(__z); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg> + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + + _M_insert_lower(_Base_ptr __p, _Arg&& __v) + + + + { + bool __insert_left = (__p == _M_end() + || !_M_impl._M_key_compare(_S_key(__p), + _KeyOfValue()(__v))); + + _Link_type __z = _M_create_node(std::forward<_Arg>(__v)); + + _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, + this->_M_impl._M_header); + ++_M_impl._M_node_count; + return iterator(__z); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg> + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + + _M_insert_equal_lower(_Arg&& __v) + + + + { + _Link_type __x = _M_begin(); + _Link_type __y = _M_end(); + while (__x != 0) + { + __y = __x; + __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? + _S_left(__x) : _S_right(__x); + } + return _M_insert_lower(__y, std::forward<_Arg>(__v)); + } + + template<typename _Key, typename _Val, typename _KoV, + typename _Compare, typename _Alloc> + template<typename _NodeGen> + typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type + _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: + _M_copy(_Const_Link_type __x, _Link_type __p, _NodeGen& __node_gen) + { + + _Link_type __top = _M_clone_node(__x, __node_gen); + __top->_M_parent = __p; + + try + { + if (__x->_M_right) + __top->_M_right = _M_copy(_S_right(__x), __top, __node_gen); + __p = __top; + __x = _S_left(__x); + + while (__x != 0) + { + _Link_type __y = _M_clone_node(__x, __node_gen); + __p->_M_left = __y; + __y->_M_parent = __p; + if (__x->_M_right) + __y->_M_right = _M_copy(_S_right(__x), __y, __node_gen); + __p = __y; + __x = _S_left(__x); + } + } + catch(...) + { + _M_erase(__top); + throw; + } + return __top; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_erase(_Link_type __x) + { + + while (__x != 0) + { + _M_erase(_S_right(__x)); + _Link_type __y = _S_left(__x); + _M_drop_node(__x); + __x = __y; + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_lower_bound(_Link_type __x, _Link_type __y, + const _Key& __k) + { + while (__x != 0) + if (!_M_impl._M_key_compare(_S_key(__x), __k)) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return iterator(__y); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::const_iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y, + const _Key& __k) const + { + while (__x != 0) + if (!_M_impl._M_key_compare(_S_key(__x), __k)) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return const_iterator(__y); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_upper_bound(_Link_type __x, _Link_type __y, + const _Key& __k) + { + while (__x != 0) + if (_M_impl._M_key_compare(__k, _S_key(__x))) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return iterator(__y); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::const_iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y, + const _Key& __k) const + { + while (__x != 0) + if (_M_impl._M_key_compare(__k, _S_key(__x))) + __y = __x, __x = _S_left(__x); + else + __x = _S_right(__x); + return const_iterator(__y); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator, + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + equal_range(const _Key& __k) + { + _Link_type __x = _M_begin(); + _Link_type __y = _M_end(); + while (__x != 0) + { + if (_M_impl._M_key_compare(_S_key(__x), __k)) + __x = _S_right(__x); + else if (_M_impl._M_key_compare(__k, _S_key(__x))) + __y = __x, __x = _S_left(__x); + else + { + _Link_type __xu(__x), __yu(__y); + __y = __x, __x = _S_left(__x); + __xu = _S_right(__xu); + return pair<iterator, + iterator>(_M_lower_bound(__x, __y, __k), + _M_upper_bound(__xu, __yu, __k)); + } + } + return pair<iterator, iterator>(iterator(__y), + iterator(__y)); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::const_iterator, + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::const_iterator> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + equal_range(const _Key& __k) const + { + _Const_Link_type __x = _M_begin(); + _Const_Link_type __y = _M_end(); + while (__x != 0) + { + if (_M_impl._M_key_compare(_S_key(__x), __k)) + __x = _S_right(__x); + else if (_M_impl._M_key_compare(__k, _S_key(__x))) + __y = __x, __x = _S_left(__x); + else + { + _Const_Link_type __xu(__x), __yu(__y); + __y = __x, __x = _S_left(__x); + __xu = _S_right(__xu); + return pair<const_iterator, + const_iterator>(_M_lower_bound(__x, __y, __k), + _M_upper_bound(__xu, __yu, __k)); + } + } + return pair<const_iterator, const_iterator>(const_iterator(__y), + const_iterator(__y)); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t) + + noexcept(_Alloc_traits::_S_nothrow_swap()) + + { + if (_M_root() == 0) + { + if (__t._M_root() != 0) + { + _M_root() = __t._M_root(); + _M_leftmost() = __t._M_leftmost(); + _M_rightmost() = __t._M_rightmost(); + _M_root()->_M_parent = _M_end(); + _M_impl._M_node_count = __t._M_impl._M_node_count; + + __t._M_impl._M_reset(); + } + } + else if (__t._M_root() == 0) + { + __t._M_root() = _M_root(); + __t._M_leftmost() = _M_leftmost(); + __t._M_rightmost() = _M_rightmost(); + __t._M_root()->_M_parent = __t._M_end(); + __t._M_impl._M_node_count = _M_impl._M_node_count; + + _M_impl._M_reset(); + } + else + { + 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); + } + + std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); + + _Alloc_traits::_S_on_swap(_M_get_Node_allocator(), + __t._M_get_Node_allocator()); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr, + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_get_insert_unique_pos(const key_type& __k) + { + typedef pair<_Base_ptr, _Base_ptr> _Res; + _Link_type __x = _M_begin(); + _Link_type __y = _M_end(); + bool __comp = true; + while (__x != 0) + { + __y = __x; + __comp = _M_impl._M_key_compare(__k, _S_key(__x)); + __x = __comp ? _S_left(__x) : _S_right(__x); + } + iterator __j = iterator(__y); + if (__comp) + { + if (__j == begin()) + return _Res(__x, __y); + else + --__j; + } + if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) + return _Res(__x, __y); + return _Res(__j._M_node, 0); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr, + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_get_insert_equal_pos(const key_type& __k) + { + typedef pair<_Base_ptr, _Base_ptr> _Res; + _Link_type __x = _M_begin(); + _Link_type __y = _M_end(); + while (__x != 0) + { + __y = __x; + __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? + _S_left(__x) : _S_right(__x); + } + return _Res(__x, __y); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg> + + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator, bool> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + + _M_insert_unique(_Arg&& __v) + + + + { + typedef pair<iterator, bool> _Res; + pair<_Base_ptr, _Base_ptr> __res + = _M_get_insert_unique_pos(_KeyOfValue()(__v)); + + if (__res.second) + { + _Alloc_node __an(*this); + return _Res(_M_insert_(__res.first, __res.second, + std::forward<_Arg>(__v), __an), + true); + } + + return _Res(iterator(static_cast<_Link_type>(__res.first)), false); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg> + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + + _M_insert_equal(_Arg&& __v) + + + + { + pair<_Base_ptr, _Base_ptr> __res + = _M_get_insert_equal_pos(_KeyOfValue()(__v)); + _Alloc_node __an(*this); + return _M_insert_(__res.first, __res.second, + std::forward<_Arg>(__v), __an); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr, + 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, + const key_type& __k) + { + iterator __pos = __position._M_const_cast(); + typedef pair<_Base_ptr, _Base_ptr> _Res; + + + if (__pos._M_node == _M_end()) + { + if (size() > 0 + && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) + return _Res(0, _M_rightmost()); + else + return _M_get_insert_unique_pos(__k); + } + else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) + { + + iterator __before = __pos; + if (__pos._M_node == _M_leftmost()) + return _Res(_M_leftmost(), _M_leftmost()); + else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) + { + if (_S_right(__before._M_node) == 0) + return _Res(0, __before._M_node); + else + return _Res(__pos._M_node, __pos._M_node); + } + else + return _M_get_insert_unique_pos(__k); + } + else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) + { + + iterator __after = __pos; + if (__pos._M_node == _M_rightmost()) + return _Res(0, _M_rightmost()); + else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) + { + if (_S_right(__pos._M_node) == 0) + return _Res(0, __pos._M_node); + else + return _Res(__after._M_node, __after._M_node); + } + else + return _M_get_insert_unique_pos(__k); + } + else + + return _Res(__pos._M_node, 0); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg, typename _NodeGen> + + + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_insert_unique_(const_iterator __position, + + _Arg&& __v, + + + + _NodeGen& __node_gen) + { + pair<_Base_ptr, _Base_ptr> __res + = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); + + if (__res.second) + return _M_insert_(__res.first, __res.second, + std::forward<_Arg>(__v), + __node_gen); + return iterator(static_cast<_Link_type>(__res.first)); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::_Base_ptr, + 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) + { + iterator __pos = __position._M_const_cast(); + typedef pair<_Base_ptr, _Base_ptr> _Res; + + + if (__pos._M_node == _M_end()) + { + if (size() > 0 + && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) + return _Res(0, _M_rightmost()); + else + return _M_get_insert_equal_pos(__k); + } + else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) + { + + iterator __before = __pos; + if (__pos._M_node == _M_leftmost()) + return _Res(_M_leftmost(), _M_leftmost()); + else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) + { + if (_S_right(__before._M_node) == 0) + return _Res(0, __before._M_node); + else + return _Res(__pos._M_node, __pos._M_node); + } + else + return _M_get_insert_equal_pos(__k); + } + else + { + + iterator __after = __pos; + if (__pos._M_node == _M_rightmost()) + return _Res(0, _M_rightmost()); + else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) + { + if (_S_right(__pos._M_node) == 0) + return _Res(0, __pos._M_node); + else + return _Res(__after._M_node, __after._M_node); + } + else + return _Res(0, 0); + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + + template<typename _Arg, typename _NodeGen> + + + + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_insert_equal_(const_iterator __position, + + _Arg&& __v, + + + + _NodeGen& __node_gen) + { + pair<_Base_ptr, _Base_ptr> __res + = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); + + if (__res.second) + return _M_insert_(__res.first, __res.second, + std::forward<_Arg>(__v), + __node_gen); + + return _M_insert_equal_lower(std::forward<_Arg>(__v)); + } + + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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) + { + bool __insert_left = (__x != 0 || __p == _M_end() + || _M_impl._M_key_compare(_S_key(__z), + _S_key(__p))); + + _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, + this->_M_impl._M_header); + ++_M_impl._M_node_count; + return iterator(__z); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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) + { + bool __insert_left = (__p == _M_end() + || !_M_impl._M_key_compare(_S_key(__p), + _S_key(__z))); + + _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, + this->_M_impl._M_header); + ++_M_impl._M_node_count; + return iterator(__z); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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) + { + _Link_type __x = _M_begin(); + _Link_type __y = _M_end(); + while (__x != 0) + { + __y = __x; + __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? + _S_left(__x) : _S_right(__x); + } + return _M_insert_lower_node(__y, __z); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename... _Args> + pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator, bool> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_emplace_unique(_Args&&... __args) + { + _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); + + try + { + typedef pair<iterator, bool> _Res; + auto __res = _M_get_insert_unique_pos(_S_key(__z)); + if (__res.second) + return _Res(_M_insert_node(__res.first, __res.second, __z), true); + + _M_drop_node(__z); + return _Res(iterator(static_cast<_Link_type>(__res.first)), false); + } + catch(...) + { + _M_drop_node(__z); + throw; + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename... _Args> + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_emplace_equal(_Args&&... __args) + { + _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); + + try + { + auto __res = _M_get_insert_equal_pos(_S_key(__z)); + return _M_insert_node(__res.first, __res.second, __z); + } + catch(...) + { + _M_drop_node(__z); + throw; + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename... _Args> + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) + { + _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); + + try + { + auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z)); + + if (__res.second) + return _M_insert_node(__res.first, __res.second, __z); + + _M_drop_node(__z); + return iterator(static_cast<_Link_type>(__res.first)); + } + catch(...) + { + _M_drop_node(__z); + throw; + } + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + template<typename... _Args> + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) + { + _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); + + try + { + auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z)); + + if (__res.second) + return _M_insert_node(__res.first, __res.second, __z); + + return _M_insert_equal_lower_node(__z); + } + catch(...) + { + _M_drop_node(__z); + throw; + } + } + + + template<typename _Key, typename _Val, typename _KoV, + typename _Cmp, typename _Alloc> + template<class _II> + void + _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: + _M_insert_unique(_II __first, _II __last) + { + _Alloc_node __an(*this); + for (; __first != __last; ++__first) + _M_insert_unique_(end(), *__first, __an); + } + + template<typename _Key, typename _Val, typename _KoV, + typename _Cmp, typename _Alloc> + template<class _II> + void + _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: + _M_insert_equal(_II __first, _II __last) + { + _Alloc_node __an(*this); + for (; __first != __last; ++__first) + _M_insert_equal_(end(), *__first, __an); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_erase_aux(const_iterator __position) + { + _Link_type __y = + static_cast<_Link_type>(_Rb_tree_rebalance_for_erase + (const_cast<_Base_ptr>(__position._M_node), + this->_M_impl._M_header)); + _M_drop_node(__y); + --_M_impl._M_node_count; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_erase_aux(const_iterator __first, const_iterator __last) + { + if (__first == begin() && __last == end()) + clear(); + else + while (__first != __last) + erase(__first++); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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) + { + pair<iterator, iterator> __p = equal_range(__x); + const size_type __old_size = size(); + erase(__p.first, __p.second); + return __old_size - size(); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + erase(const _Key* __first, const _Key* __last) + { + while (__first != __last) + erase(*__first++); + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + find(const _Key& __k) + { + iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); + return (__j == end() + || _M_impl._M_key_compare(__k, + _S_key(__j._M_node))) ? end() : __j; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + typename _Rb_tree<_Key, _Val, _KeyOfValue, + _Compare, _Alloc>::const_iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + find(const _Key& __k) const + { + const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); + return (__j == end() + || _M_impl._M_key_compare(__k, + _S_key(__j._M_node))) ? end() : __j; + } + + template<typename _Key, typename _Val, typename _KeyOfValue, + 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 + { + pair<const_iterator, const_iterator> __p = equal_range(__k); + const size_type __n = std::distance(__p.first, __p.second); + return __n; + } + + __attribute__ ((__pure__)) unsigned int + _Rb_tree_black_count(const _Rb_tree_node_base* __node, + const _Rb_tree_node_base* __root) throw (); + + template<typename _Key, typename _Val, typename _KeyOfValue, + typename _Compare, typename _Alloc> + bool + _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const + { + if (_M_impl._M_node_count == 0 || begin() == end()) + return _M_impl._M_node_count == 0 && begin() == end() + && this->_M_impl._M_header._M_left == _M_end() + && this->_M_impl._M_header._M_right == _M_end(); + + unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); + for (const_iterator __it = begin(); __it != end(); ++__it) + { + _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); + _Const_Link_type __L = _S_left(__x); + _Const_Link_type __R = _S_right(__x); + + if (__x->_M_color == _S_red) + if ((__L && __L->_M_color == _S_red) + || (__R && __R->_M_color == _S_red)) + return false; + + if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) + return false; + if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) + return false; + + if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) + return false; + } + + if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) + return false; + if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) + return false; + return true; + } + + +} +# 61 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 1 3 +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 3 + + + + + + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/array" 1 3 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/array" 3 + +# 33 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/array" 3 +# 42 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/array" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + template<typename _Tp, std::size_t _Nm> + struct __array_traits + { + typedef _Tp _Type[_Nm]; + + 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<typename _Tp> + struct __array_traits<_Tp, 0> + { + struct _Type { }; + + 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; } + }; +# 88 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/array" 3 + template<typename _Tp, std::size_t _Nm> + 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<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + + typedef std::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + + + + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))) + { std::swap_ranges(begin(), end(), __other.begin()); } + + + iterator + begin() noexcept + { return iterator(data()); } + + const_iterator + begin() const noexcept + { return const_iterator(data()); } + + iterator + end() noexcept + { return iterator(data() + _Nm); } + + const_iterator + end() const noexcept + { return const_iterator(data() + _Nm); } + + reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + const_iterator + cbegin() const noexcept + { return const_iterator(data()); } + + const_iterator + cend() const noexcept + { return const_iterator(data() + _Nm); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } + + + 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; } + + + 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); } + + reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range_fmt(("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 + { + + + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") + , + __n, _Nm), + _AT_Type::_S_ref(_M_elems, 0)); + } + + reference + front() noexcept + { return *begin(); } + + constexpr const_reference + front() const noexcept + { return _AT_Type::_S_ref(_M_elems, 0); } + + 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); + } + + pointer + data() noexcept + { return _AT_Type::_S_ptr(_M_elems); } + + const_pointer + data() const noexcept + { return _AT_Type::_S_ptr(_M_elems); } + }; + + + template<typename _Tp, std::size_t _Nm> + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template<typename _Tp, std::size_t _Nm> + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template<typename _Tp, std::size_t _Nm> + 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<typename _Tp, std::size_t _Nm> + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template<typename _Tp, std::size_t _Nm> + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template<typename _Tp, std::size_t _Nm> + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + + template<typename _Tp, std::size_t _Nm> + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + + template<std::size_t _Int, typename _Tp, std::size_t _Nm> + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template<std::size_t _Int, typename _Tp, std::size_t _Nm> + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(std::get<_Int>(__arr)); + } + + template<std::size_t _Int, typename _Tp, std::size_t _Nm> + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + +} + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + template<typename _Tp> + class tuple_size; + + + template<typename _Tp, std::size_t _Nm> + struct tuple_size<std::array<_Tp, _Nm>> + : public integral_constant<std::size_t, _Nm> { }; + + + template<std::size_t _Int, typename _Tp> + class tuple_element; + + + template<std::size_t _Int, typename _Tp, std::size_t _Nm> + struct tuple_element<_Int, std::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; + + +} +# 40 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/uses_allocator.h" 1 3 +# 34 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/uses_allocator.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + struct allocator_arg_t { }; + + constexpr allocator_arg_t allocator_arg = allocator_arg_t(); + + template<typename _Tp, typename _Alloc, typename = __void_t<>> + struct __uses_allocator_helper + : false_type { }; + + template<typename _Tp, typename _Alloc> + struct __uses_allocator_helper<_Tp, _Alloc, + __void_t<typename _Tp::allocator_type>> + : is_convertible<_Alloc, typename _Tp::allocator_type>::type + { }; + + + template<typename _Tp, typename _Alloc> + struct uses_allocator + : __uses_allocator_helper<_Tp, _Alloc>::type + { }; + + struct __uses_alloc_base { }; + + struct __uses_alloc0 : __uses_alloc_base + { + struct _Sink { void operator=(const void*) { } } _M_a; + }; + + template<typename _Alloc> + struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; + + template<typename _Alloc> + struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; + + template<bool, typename _Tp, typename _Alloc, typename... _Args> + struct __uses_alloc; + + template<typename _Tp, typename _Alloc, typename... _Args> + struct __uses_alloc<true, _Tp, _Alloc, _Args...> + : conditional< + is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, + __uses_alloc1<_Alloc>, + __uses_alloc2<_Alloc>>::type + { }; + + template<typename _Tp, typename _Alloc, typename... _Args> + struct __uses_alloc<false, _Tp, _Alloc, _Args...> + : __uses_alloc0 { }; + + template<typename _Tp, typename _Alloc, typename... _Args> + using __uses_alloc_t = + __uses_alloc<uses_allocator<_Tp, _Alloc>::value, _Tp, _Alloc, _Args...>; + + template<typename _Tp, typename _Alloc, typename... _Args> + inline __uses_alloc_t<_Tp, _Alloc, _Args...> + __use_alloc(const _Alloc& __a) + { + __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; + __ret._M_a = &__a; + return __ret; + } + + +} +# 41 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 2 3 + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + + + + + + + + template<std::size_t _Idx, typename _Head, bool _IsEmptyNotFinal> + struct _Head_base; + + template<std::size_t _Idx, typename _Head> + 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<typename _UHead> + constexpr _Head_base(_UHead&& __h) + : _Head(std::forward<_UHead>(__h)) { } + + _Head_base(allocator_arg_t, __uses_alloc0) + : _Head() { } + + template<typename _Alloc> + _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _Head(allocator_arg, *__a._M_a) { } + + template<typename _Alloc> + _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _Head(*__a._M_a) { } + + template<typename _UHead> + _Head_base(__uses_alloc0, _UHead&& __uhead) + : _Head(std::forward<_UHead>(__uhead)) { } + + template<typename _Alloc, typename _UHead> + _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) + : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } + + template<typename _Alloc, typename _UHead> + _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<std::size_t _Idx, typename _Head> + 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<typename _UHead> + constexpr _Head_base(_UHead&& __h) + : _M_head_impl(std::forward<_UHead>(__h)) { } + + _Head_base(allocator_arg_t, __uses_alloc0) + : _M_head_impl() { } + + template<typename _Alloc> + _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _M_head_impl(allocator_arg, *__a._M_a) { } + + template<typename _Alloc> + _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _M_head_impl(*__a._M_a) { } + + template<typename _UHead> + _Head_base(__uses_alloc0, _UHead&& __uhead) + : _M_head_impl(std::forward<_UHead>(__uhead)) { } + + template<typename _Alloc, typename _UHead> + _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) + : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) + { } + + template<typename _Alloc, typename _UHead> + _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; + }; +# 158 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/tuple" 3 + template<std::size_t _Idx, typename... _Elements> + struct _Tuple_impl; + + template<typename _Tp> + struct __is_empty_non_tuple : is_empty<_Tp> { }; + + + template<typename _El0, typename... _El> + struct __is_empty_non_tuple<tuple<_El0, _El...>> : false_type { }; + + + template<typename _Tp> + using __empty_not_final + = typename conditional<__is_final(_Tp), false_type, + __is_empty_non_tuple<_Tp>>::type; + + + + + + + template<std::size_t _Idx, typename _Head, typename... _Tail> + struct _Tuple_impl<_Idx, _Head, _Tail...> + : public _Tuple_impl<_Idx + 1, _Tail...>, + private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> + { + template<std::size_t, typename...> friend class _Tuple_impl; + + typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; + typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> _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<typename _UHead, typename... _UTail, typename = typename + enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::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<_Head>, + is_nothrow_move_constructible<_Inherited>>::value) + : _Inherited(std::move(_M_tail(__in))), + _Base(std::forward<_Head>(_M_head(__in))) { } + + template<typename... _UElements> + 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<typename _UHead, typename... _UTails> + 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<typename _Alloc> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a), + _Base(__tag, __use_alloc<_Head>(__a)) { } + + template<typename _Alloc> + _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<typename _Alloc, typename _UHead, typename... _UTail, + typename = typename enable_if<sizeof...(_Tail) + == sizeof...(_UTail)>::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<typename _Alloc> + _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<typename _Alloc> + _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<typename _Alloc, typename... _UElements> + _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<typename _Alloc, typename _UHead, typename... _UTails> + _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<_Head>, + 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<typename... _UElements> + _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<typename _UHead, typename... _UTails> + _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(noexcept(swap(std::declval<_Head&>(), + std::declval<_Head&>())) + && 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)); + } + }; + + + template<std::size_t _Idx, typename _Head> + struct _Tuple_impl<_Idx, _Head> + : private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> + { + template<std::size_t, typename...> friend class _Tuple_impl; + + typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> _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<typename _UHead> + 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<typename _UHead> + constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) + : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } + + template<typename _UHead> + constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) + : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) + { } + + template<typename _Alloc> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) + : _Base(__tag, __use_alloc<_Head>(__a)) { } + + template<typename _Alloc> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Head& __head) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } + + template<typename _Alloc, typename _UHead> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _UHead&& __head) + : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + std::forward<_UHead>(__head)) { } + + template<typename _Alloc> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl& __in) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } + + template<typename _Alloc> + _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<typename _Alloc, typename _UHead> + _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<typename _Alloc, typename _UHead> + _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<typename _UHead> + _Tuple_impl& + operator=(const _Tuple_impl<_Idx, _UHead>& __in) + { + _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); + return *this; + } + + template<typename _UHead> + _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(noexcept(swap(std::declval<_Head&>(), std::declval<_Head&>()))) + { + using std::swap; + swap(_M_head(*this), _M_head(__in)); + } + }; + + + template<typename... _Elements> + class tuple : public _Tuple_impl<0, _Elements...> + { + typedef _Tuple_impl<0, _Elements...> _Inherited; + + public: + constexpr tuple() + : _Inherited() { } + + explicit + constexpr tuple(const _Elements&... __elements) + : _Inherited(__elements...) { } + + template<typename... _UElements, typename = typename + enable_if<__and_<is_convertible<_UElements, + _Elements>...>::value>::type> + explicit + constexpr tuple(_UElements&&... __elements) + : _Inherited(std::forward<_UElements>(__elements)...) { } + + constexpr tuple(const tuple&) = default; + + constexpr tuple(tuple&&) = default; + + template<typename... _UElements, typename = typename + enable_if<__and_<is_convertible<const _UElements&, + _Elements>...>::value>::type> + constexpr tuple(const tuple<_UElements...>& __in) + : _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in)) + { } + + template<typename... _UElements, typename = typename + enable_if<__and_<is_convertible<_UElements, + _Elements>...>::value>::type> + constexpr tuple(tuple<_UElements...>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } + + + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a) { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const _Elements&... __elements) + : _Inherited(__tag, __a, __elements...) { } + + template<typename _Alloc, typename... _UElements, typename = typename + enable_if<sizeof...(_UElements) + == sizeof...(_Elements)>::type> + tuple(allocator_arg_t __tag, const _Alloc& __a, + _UElements&&... __elements) + : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) + { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) + : _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) + : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } + + template<typename _Alloc, typename... _UElements, typename = typename + enable_if<sizeof...(_UElements) + == sizeof...(_Elements)>::type> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_UElements...>& __in) + : _Inherited(__tag, __a, + static_cast<const _Tuple_impl<0, _UElements...>&>(__in)) + { } + + template<typename _Alloc, typename... _UElements, typename = typename + enable_if<sizeof...(_UElements) + == sizeof...(_Elements)>::type> + 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... _UElements, typename = typename + enable_if<sizeof...(_UElements) + == sizeof...(_Elements)>::type> + tuple& + operator=(const tuple<_UElements...>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + template<typename... _UElements, typename = typename + enable_if<sizeof...(_UElements) + == sizeof...(_Elements)>::type> + tuple& + 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); } + }; + + + template<> + class tuple<> + { + public: + void swap(tuple&) noexcept { } + }; + + + + template<typename _T1, typename _T2> + class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> + { + typedef _Tuple_impl<0, _T1, _T2> _Inherited; + + public: + constexpr tuple() + : _Inherited() { } + + explicit + constexpr tuple(const _T1& __a1, const _T2& __a2) + : _Inherited(__a1, __a2) { } + + template<typename _U1, typename _U2, typename = typename + enable_if<__and_<is_convertible<_U1, _T1>, + is_convertible<_U2, _T2>>::value>::type> + 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<typename _U1, typename _U2, typename = typename + enable_if<__and_<is_convertible<const _U1&, _T1>, + is_convertible<const _U2&, _T2>>::value>::type> + constexpr tuple(const tuple<_U1, _U2>& __in) + : _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { } + + template<typename _U1, typename _U2, typename = typename + enable_if<__and_<is_convertible<_U1, _T1>, + is_convertible<_U2, _T2>>::value>::type> + constexpr tuple(tuple<_U1, _U2>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } + + template<typename _U1, typename _U2, typename = typename + enable_if<__and_<is_convertible<const _U1&, _T1>, + is_convertible<const _U2&, _T2>>::value>::type> + constexpr tuple(const pair<_U1, _U2>& __in) + : _Inherited(__in.first, __in.second) { } + + template<typename _U1, typename _U2, typename = typename + enable_if<__and_<is_convertible<_U1, _T1>, + is_convertible<_U2, _T2>>::value>::type> + constexpr tuple(pair<_U1, _U2>&& __in) + : _Inherited(std::forward<_U1>(__in.first), + std::forward<_U2>(__in.second)) { } + + + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a) { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const _T1& __a1, const _T2& __a2) + : _Inherited(__tag, __a, __a1, __a2) { } + + template<typename _Alloc, typename _U1, typename _U2> + tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) + : _Inherited(__tag, __a, std::forward<_U1>(__a1), + std::forward<_U2>(__a2)) { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) + : _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { } + + template<typename _Alloc> + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) + : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } + + template<typename _Alloc, typename _U1, typename _U2> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_U1, _U2>& __in) + : _Inherited(__tag, __a, + static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) + { } + + template<typename _Alloc, typename _U1, typename _U2> + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) + : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) + { } + + template<typename _Alloc, typename _U1, typename _U2> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const pair<_U1, _U2>& __in) + : _Inherited(__tag, __a, __in.first, __in.second) { } + + template<typename _Alloc, typename _U1, typename _U2> + 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<typename _U1, typename _U2> + tuple& + operator=(const tuple<_U1, _U2>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + template<typename _U1, typename _U2> + tuple& + operator=(tuple<_U1, _U2>&& __in) + { + static_cast<_Inherited&>(*this) = std::move(__in); + return *this; + } + + template<typename _U1, typename _U2> + 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<typename _U1, typename _U2> + 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); } + }; + + + + template<std::size_t __i, typename _Tp> + struct tuple_element; + + + + + + template<std::size_t __i, typename _Head, typename... _Tail> + struct tuple_element<__i, tuple<_Head, _Tail...> > + : tuple_element<__i - 1, tuple<_Tail...> > { }; + + + + + template<typename _Head, typename... _Tail> + struct tuple_element<0, tuple<_Head, _Tail...> > + { + typedef _Head type; + }; + + + template<std::size_t __i, typename _Tp> + using __tuple_element_t = typename tuple_element<__i, _Tp>::type; + + template<std::size_t __i, typename _Tp> + struct tuple_element<__i, const _Tp> + { + typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; + }; + + template<std::size_t __i, typename _Tp> + struct tuple_element<__i, volatile _Tp> + { + typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; + }; + + template<std::size_t __i, typename _Tp> + struct tuple_element<__i, const volatile _Tp> + { + typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; + }; + + + + + template<std::size_t __i, typename _Tp> + using tuple_element_t = typename tuple_element<__i, _Tp>::type; + + + + template<typename _Tp> + struct tuple_size; + + + + template<typename _Tp> + struct tuple_size<const _Tp> + : integral_constant<size_t, tuple_size<_Tp>::value> { }; + + template<typename _Tp> + struct tuple_size<volatile _Tp> + : integral_constant<size_t, tuple_size<_Tp>::value> { }; + + template<typename _Tp> + struct tuple_size<const volatile _Tp> + : integral_constant<size_t, tuple_size<_Tp>::value> { }; + + + template<typename... _Elements> + struct tuple_size<tuple<_Elements...>> + : public integral_constant<std::size_t, sizeof...(_Elements)> { }; + + template<std::size_t __i, typename _Head, typename... _Tail> + constexpr _Head& + __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + template<std::size_t __i, typename _Head, typename... _Tail> + constexpr const _Head& + __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + + template<std::size_t __i, typename... _Elements> + constexpr __tuple_element_t<__i, tuple<_Elements...>>& + get(tuple<_Elements...>& __t) noexcept + { return std::__get_helper<__i>(__t); } + + + template<std::size_t __i, typename... _Elements> + constexpr const __tuple_element_t<__i, tuple<_Elements...>>& + get(const tuple<_Elements...>& __t) noexcept + { return std::__get_helper<__i>(__t); } + + + template<std::size_t __i, typename... _Elements> + 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)); + } + + + + + + template<typename _Head, size_t __i, typename... _Tail> + constexpr _Head& + __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + template<typename _Head, size_t __i, typename... _Tail> + constexpr const _Head& + __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + + template <typename _Tp, typename... _Types> + constexpr _Tp& + get(tuple<_Types...>& __t) noexcept + { return std::__get_helper2<_Tp>(__t); } + + + template <typename _Tp, typename... _Types> + constexpr _Tp&& + get(tuple<_Types...>&& __t) noexcept + { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } + + + template <typename _Tp, typename... _Types> + constexpr const _Tp& + get(const tuple<_Types...>& __t) noexcept + { return std::__get_helper2<_Tp>(__t); } + + + + template<typename _Tp, typename _Up, size_t __i, size_t __size> + 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<typename _Tp, typename _Up, size_t __size> + 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<typename... _TElements, typename... _UElements> + 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<_TElements...>, + tuple<_UElements...>, + 0, sizeof...(_TElements)>; + return __compare::__eq(__t, __u); + } + + template<typename... _TElements, typename... _UElements> + 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<_TElements...>, + tuple<_UElements...>, + 0, sizeof...(_TElements)>; + return __compare::__less(__t, __u); + } + + template<typename... _TElements, typename... _UElements> + constexpr bool + operator!=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t == __u); } + + template<typename... _TElements, typename... _UElements> + constexpr bool + operator>(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return __u < __t; } + + template<typename... _TElements, typename... _UElements> + constexpr bool + operator<=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__u < __t); } + + template<typename... _TElements, typename... _UElements> + constexpr bool + operator>=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t < __u); } + + + template<typename... _Elements> + constexpr tuple<typename __decay_and_strip<_Elements>::__type...> + make_tuple(_Elements&&... __args) + { + typedef tuple<typename __decay_and_strip<_Elements>::__type...> + __result_type; + return __result_type(std::forward<_Elements>(__args)...); + } + + template<typename... _Elements> + tuple<_Elements&&...> + forward_as_tuple(_Elements&&... __args) noexcept + { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } + + template<typename> + struct __is_tuple_like_impl : false_type + { }; + + template<typename... _Tps> + struct __is_tuple_like_impl<tuple<_Tps...>> : true_type + { }; + + template<typename _T1, typename _T2> + struct __is_tuple_like_impl<pair<_T1, _T2>> : true_type + { }; + + template<typename _Tp, std::size_t _Nm> + struct __is_tuple_like_impl<array<_Tp, _Nm>> : true_type + { }; + + + template<typename _Tp> + struct __is_tuple_like + : public __is_tuple_like_impl<typename std::remove_cv + <typename std::remove_reference<_Tp>::type>::type>::type + { }; + + template<size_t, typename, typename, size_t> + struct __make_tuple_impl; + + template<size_t _Idx, typename _Tuple, typename... _Tp, size_t _Nm> + struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> + : __make_tuple_impl<_Idx + 1, + tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, + _Tuple, _Nm> + { }; + + template<std::size_t _Nm, typename _Tuple, typename... _Tp> + struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> + { + typedef tuple<_Tp...> __type; + }; + + template<typename _Tuple> + struct __do_make_tuple + : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> + { }; + + + template<typename _Tuple> + struct __make_tuple + : public __do_make_tuple<typename std::remove_cv + <typename std::remove_reference<_Tuple>::type>::type> + { }; + + + template<typename...> + struct __combine_tuples; + + template<> + struct __combine_tuples<> + { + typedef tuple<> __type; + }; + + template<typename... _Ts> + struct __combine_tuples<tuple<_Ts...>> + { + typedef tuple<_Ts...> __type; + }; + + template<typename... _T1s, typename... _T2s, typename... _Rem> + struct __combine_tuples<tuple<_T1s...>, tuple<_T2s...>, _Rem...> + { + typedef typename __combine_tuples<tuple<_T1s..., _T2s...>, + _Rem...>::__type __type; + }; + + + template<typename... _Tpls> + struct __tuple_cat_result + { + typedef typename __combine_tuples + <typename __make_tuple<_Tpls>::__type...>::__type __type; + }; + + + + template<typename...> + struct __make_1st_indices; + + template<> + struct __make_1st_indices<> + { + typedef std::_Index_tuple<> __type; + }; + + template<typename _Tp, typename... _Tpls> + struct __make_1st_indices<_Tp, _Tpls...> + { + typedef typename std::_Build_index_tuple<std::tuple_size< + typename std::remove_reference<_Tp>::type>::value>::__type __type; + }; + + + + + template<typename _Ret, typename _Indices, typename... _Tpls> + struct __tuple_concater; + + template<typename _Ret, std::size_t... _Is, typename _Tp, typename... _Tpls> + struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> + { + template<typename... _Us> + 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<typename _Ret> + struct __tuple_concater<_Ret, std::_Index_tuple<>> + { + template<typename... _Us> + static constexpr _Ret + _S_do(_Us&&... __us) + { + return _Ret(std::forward<_Us>(__us)...); + } + }; + + + template<typename... _Tpls, typename = typename + enable_if<__and_<__is_tuple_like<_Tpls>...>::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)...); + } + + + template<typename... _Elements> + inline tuple<_Elements&...> + tie(_Elements&... __args) noexcept + { return tuple<_Elements&...>(__args...); } + + + template<typename... _Elements> + inline void + swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + + + struct _Swallow_assign + { + template<class _Tp> + const _Swallow_assign& + operator=(const _Tp&) const + { return *this; } + }; + + const _Swallow_assign ignore{}; + + + template<typename... _Types, typename _Alloc> + struct uses_allocator<tuple<_Types...>, _Alloc> : true_type { }; + + + template<class _T1, class _T2> + template<typename... _Args1, typename... _Args2> + inline + pair<_T1, _T2>:: + pair(piecewise_construct_t, + tuple<_Args1...> __first, tuple<_Args2...> __second) + : pair(__first, __second, + typename _Build_index_tuple<sizeof...(_Args1)>::__type(), + typename _Build_index_tuple<sizeof...(_Args2)>::__type()) + { } + + template<class _T1, class _T2> + template<typename... _Args1, std::size_t... _Indexes1, + typename... _Args2, std::size_t... _Indexes2> + 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))...) + { } + + + + +} +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 2 3 + + +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 94 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>, + typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > > + class map + { + public: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair<const _Key, _Tp> value_type; + typedef _Compare key_compare; + typedef _Alloc allocator_type; + + private: + + typedef typename _Alloc::value_type _Alloc_value_type; + + + + + + public: + class value_compare + : public std::binary_function<value_type, value_type, bool> + { + friend class map<_Key, _Tp, _Compare, _Alloc>; + protected: + _Compare comp; + + value_compare(_Compare __c) + : comp(__c) { } + + public: + bool operator()(const value_type& __x, const value_type& __y) const + { return comp(__x.first, __y.first); } + }; + + private: + + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<value_type>::other _Pair_alloc_type; + + typedef _Rb_tree<key_type, value_type, _Select1st<value_type>, + key_compare, _Pair_alloc_type> _Rep_type; + + + _Rep_type _M_t; + + typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; + + public: + + + typedef typename _Alloc_traits::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef typename _Alloc_traits::reference reference; + typedef typename _Alloc_traits::const_reference const_reference; + typedef typename _Rep_type::iterator iterator; + typedef typename _Rep_type::const_iterator const_iterator; + typedef typename _Rep_type::size_type size_type; + typedef typename _Rep_type::difference_type difference_type; + typedef typename _Rep_type::reverse_iterator reverse_iterator; + typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; + + + + + + + + map() + + noexcept(is_nothrow_default_constructible<allocator_type>::value) + + : _M_t() { } + + + + + + + explicit + map(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) { } +# 185 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + map(const map& __x) + : _M_t(__x._M_t) { } +# 196 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + map(map&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } +# 211 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + map(initializer_list<value_type> __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) + { _M_t._M_insert_unique(__l.begin(), __l.end()); } + + + explicit + map(const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) { } + + + map(const map& __m, const allocator_type& __a) + : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } + + + map(map&& __m, const allocator_type& __a) + noexcept(is_nothrow_copy_constructible<_Compare>::value + && _Alloc_traits::_S_always_equal()) + : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } + + + map(initializer_list<value_type> __l, const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) + { _M_t._M_insert_unique(__l.begin(), __l.end()); } + + + template<typename _InputIterator> + map(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) + { _M_t._M_insert_unique(__first, __last); } +# 255 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename _InputIterator> + map(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_unique(__first, __last); } +# 272 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename _InputIterator> + map(_InputIterator __first, _InputIterator __last, + const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) + { _M_t._M_insert_unique(__first, __last); } +# 295 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + map& + operator=(const map& __x) + { + _M_t = __x._M_t; + return *this; + } + + + + map& + operator=(map&&) = default; +# 318 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + map& + operator=(initializer_list<value_type> __l) + { + _M_t._M_assign_unique(__l.begin(), __l.end()); + return *this; + } + + + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_t.get_allocator()); } + + + + + + + + iterator + begin() noexcept + { return _M_t.begin(); } + + + + + + + const_iterator + begin() const noexcept + { return _M_t.begin(); } + + + + + + + iterator + end() noexcept + { return _M_t.end(); } + + + + + + + const_iterator + end() const noexcept + { return _M_t.end(); } + + + + + + + reverse_iterator + rbegin() noexcept + { return _M_t.rbegin(); } + + + + + + + const_reverse_iterator + rbegin() const noexcept + { return _M_t.rbegin(); } + + + + + + + reverse_iterator + rend() noexcept + { return _M_t.rend(); } + + + + + + + const_reverse_iterator + rend() const noexcept + { return _M_t.rend(); } + + + + + + + + const_iterator + cbegin() const noexcept + { return _M_t.begin(); } + + + + + + + const_iterator + cend() const noexcept + { return _M_t.end(); } + + + + + + + const_reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + + + + + + const_reverse_iterator + crend() const noexcept + { return _M_t.rend(); } + + + + + + + bool + empty() const noexcept + { return _M_t.empty(); } + + + size_type + size() const noexcept + { return _M_t.size(); } + + + size_type + max_size() const noexcept + { return _M_t.max_size(); } +# 473 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + mapped_type& + operator[](const key_type& __k) + { + + + + iterator __i = lower_bound(__k); + + if (__i == end() || key_comp()(__k, (*__i).first)) + + __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + std::tuple<const key_type&>(__k), + std::tuple<>()); + + + + return (*__i).second; + } + + + mapped_type& + operator[](key_type&& __k) + { + + + + iterator __i = lower_bound(__k); + + if (__i == end() || key_comp()(__k, (*__i).first)) + __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::tuple<>()); + return (*__i).second; + } +# 518 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + mapped_type& + at(const key_type& __k) + { + iterator __i = lower_bound(__k); + if (__i == end() || key_comp()(__k, (*__i).first)) + __throw_out_of_range(("map::at")); + return (*__i).second; + } + + const mapped_type& + at(const key_type& __k) const + { + const_iterator __i = lower_bound(__k); + if (__i == end() || key_comp()(__k, (*__i).first)) + __throw_out_of_range(("map::at")); + return (*__i).second; + } +# 556 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename... _Args> + std::pair<iterator, bool> + emplace(_Args&&... __args) + { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } +# 586 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename... _Args> + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_unique(__pos, + std::forward<_Args>(__args)...); + } +# 611 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + std::pair<iterator, bool> + insert(const value_type& __x) + { return _M_t._M_insert_unique(__x); } + + + template<typename _Pair, typename = typename + std::enable_if<std::is_constructible<value_type, + _Pair&&>::value>::type> + std::pair<iterator, bool> + insert(_Pair&& __x) + { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); } +# 632 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + void + insert(std::initializer_list<value_type> __list) + { insert(__list.begin(), __list.end()); } +# 660 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + + insert(const_iterator __position, const value_type& __x) + + + + { return _M_t._M_insert_unique_(__position, __x); } + + + template<typename _Pair, typename = typename + std::enable_if<std::is_constructible<value_type, + _Pair&&>::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { return _M_t._M_insert_unique_(__position, + std::forward<_Pair>(__x)); } +# 686 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename _InputIterator> + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_unique(__first, __last); } +# 707 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } + + + __attribute ((__abi_tag__ ("cxx11"))) + iterator + erase(iterator __position) + { return _M_t.erase(__position); } +# 743 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } +# 763 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +# 795 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + void + swap(map& __x) + + noexcept(_Alloc_traits::_S_nothrow_swap()) + + { _M_t.swap(__x._M_t); } + + + + + + + + void + clear() noexcept + { _M_t.clear(); } + + + + + + + key_compare + key_comp() const + { return _M_t.key_comp(); } + + + + + + value_compare + value_comp() const + { return value_compare(_M_t.key_comp()); } +# 844 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + + template<typename _Kt> + auto + find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) + { return _M_t._M_find_tr(__x); } +# 869 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + + + template<typename _Kt> + auto + find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) + { return _M_t._M_find_tr(__x); } +# 890 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + size_type + count(const key_type& __x) const + { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } + + + template<typename _Kt> + auto + count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) + { return _M_t._M_find_tr(__x) == _M_t.end() ? 0 : 1; } +# 914 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + lower_bound(const key_type& __x) + { return _M_t.lower_bound(__x); } + + + template<typename _Kt> + auto + lower_bound(const _Kt& __x) + -> decltype(_M_t._M_lower_bound_tr(__x)) + { return _M_t._M_lower_bound_tr(__x); } +# 939 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + const_iterator + lower_bound(const key_type& __x) const + { return _M_t.lower_bound(__x); } + + + template<typename _Kt> + auto + lower_bound(const _Kt& __x) const + -> decltype(_M_t._M_lower_bound_tr(__x)) + { return _M_t._M_lower_bound_tr(__x); } +# 959 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + iterator + upper_bound(const key_type& __x) + { return _M_t.upper_bound(__x); } + + + template<typename _Kt> + auto + upper_bound(const _Kt& __x) + -> decltype(_M_t._M_upper_bound_tr(__x)) + { return _M_t._M_upper_bound_tr(__x); } +# 979 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + const_iterator + upper_bound(const key_type& __x) const + { return _M_t.upper_bound(__x); } + + + template<typename _Kt> + auto + upper_bound(const _Kt& __x) const + -> decltype(_M_t._M_upper_bound_tr(__x)) + { return _M_t._M_upper_bound_tr(__x); } +# 1008 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + std::pair<iterator, iterator> + equal_range(const key_type& __x) + { return _M_t.equal_range(__x); } + + + template<typename _Kt> + auto + equal_range(const _Kt& __x) + -> decltype(_M_t._M_equal_range_tr(__x)) + { return _M_t._M_equal_range_tr(__x); } +# 1037 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + std::pair<const_iterator, const_iterator> + equal_range(const key_type& __x) const + { return _M_t.equal_range(__x); } + + + template<typename _Kt> + auto + equal_range(const _Kt& __x) const + -> decltype(_M_t._M_equal_range_tr(__x)) + { return _M_t._M_equal_range_tr(__x); } + + + + template<typename _K1, typename _T1, typename _C1, typename _A1> + friend bool + operator==(const map<_K1, _T1, _C1, _A1>&, + const map<_K1, _T1, _C1, _A1>&); + + template<typename _K1, typename _T1, typename _C1, typename _A1> + friend bool + operator<(const map<_K1, _T1, _C1, _A1>&, + const map<_K1, _T1, _C1, _A1>&); + }; +# 1071 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return __x._M_t == __y._M_t; } +# 1088 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_map.h" 3 + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return __x._M_t < __y._M_t; } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline void + swap(map<_Key, _Tp, _Compare, _Alloc>& __x, + map<_Key, _Tp, _Compare, _Alloc>& __y) + { __x.swap(__y); } + + +} +# 62 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 2 3 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 1 3 +# 64 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 +namespace std __attribute__ ((__visibility__ ("default"))) +{ + +# 92 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template <typename _Key, typename _Tp, + typename _Compare = std::less<_Key>, + typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > > + class multimap + { + public: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair<const _Key, _Tp> value_type; + typedef _Compare key_compare; + typedef _Alloc allocator_type; + + private: + + typedef typename _Alloc::value_type _Alloc_value_type; + + + + + + public: + class value_compare + : public std::binary_function<value_type, value_type, bool> + { + friend class multimap<_Key, _Tp, _Compare, _Alloc>; + protected: + _Compare comp; + + value_compare(_Compare __c) + : comp(__c) { } + + public: + bool operator()(const value_type& __x, const value_type& __y) const + { return comp(__x.first, __y.first); } + }; + + private: + + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<value_type>::other _Pair_alloc_type; + + typedef _Rb_tree<key_type, value_type, _Select1st<value_type>, + key_compare, _Pair_alloc_type> _Rep_type; + + _Rep_type _M_t; + + typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; + + public: + + + typedef typename _Alloc_traits::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef typename _Alloc_traits::reference reference; + typedef typename _Alloc_traits::const_reference const_reference; + typedef typename _Rep_type::iterator iterator; + typedef typename _Rep_type::const_iterator const_iterator; + typedef typename _Rep_type::size_type size_type; + typedef typename _Rep_type::difference_type difference_type; + typedef typename _Rep_type::reverse_iterator reverse_iterator; + typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; + + + + + + + + multimap() + + noexcept(is_nothrow_default_constructible<allocator_type>::value) + + : _M_t() { } + + + + + + + explicit + multimap(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) { } +# 183 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + multimap(const multimap& __x) + : _M_t(__x._M_t) { } +# 194 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + multimap(multimap&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } +# 208 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + multimap(initializer_list<value_type> __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) + { _M_t._M_insert_equal(__l.begin(), __l.end()); } + + + explicit + multimap(const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) { } + + + multimap(const multimap& __m, const allocator_type& __a) + : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } + + + multimap(multimap&& __m, const allocator_type& __a) + noexcept(is_nothrow_copy_constructible<_Compare>::value + && _Alloc_traits::_S_always_equal()) + : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } + + + multimap(initializer_list<value_type> __l, const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) + { _M_t._M_insert_equal(__l.begin(), __l.end()); } + + + template<typename _InputIterator> + multimap(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _M_t(_Compare(), _Pair_alloc_type(__a)) + { _M_t._M_insert_equal(__first, __last); } +# 251 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename _InputIterator> + multimap(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_equal(__first, __last); } +# 267 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename _InputIterator> + multimap(_InputIterator __first, _InputIterator __last, + const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) + { _M_t._M_insert_equal(__first, __last); } +# 290 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + multimap& + operator=(const multimap& __x) + { + _M_t = __x._M_t; + return *this; + } + + + + multimap& + operator=(multimap&&) = default; +# 313 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + multimap& + operator=(initializer_list<value_type> __l) + { + _M_t._M_assign_equal(__l.begin(), __l.end()); + return *this; + } + + + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_t.get_allocator()); } + + + + + + + + iterator + begin() noexcept + { return _M_t.begin(); } + + + + + + + const_iterator + begin() const noexcept + { return _M_t.begin(); } + + + + + + + iterator + end() noexcept + { return _M_t.end(); } + + + + + + + const_iterator + end() const noexcept + { return _M_t.end(); } + + + + + + + reverse_iterator + rbegin() noexcept + { return _M_t.rbegin(); } + + + + + + + const_reverse_iterator + rbegin() const noexcept + { return _M_t.rbegin(); } + + + + + + + reverse_iterator + rend() noexcept + { return _M_t.rend(); } + + + + + + + const_reverse_iterator + rend() const noexcept + { return _M_t.rend(); } + + + + + + + + const_iterator + cbegin() const noexcept + { return _M_t.begin(); } + + + + + + + const_iterator + cend() const noexcept + { return _M_t.end(); } + + + + + + + const_reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + + + + + + const_reverse_iterator + crend() const noexcept + { return _M_t.rend(); } + + + + + bool + empty() const noexcept + { return _M_t.empty(); } + + + size_type + size() const noexcept + { return _M_t.size(); } + + + size_type + max_size() const noexcept + { return _M_t.max_size(); } +# 471 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename... _Args> + iterator + emplace(_Args&&... __args) + { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } +# 498 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename... _Args> + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_equal(__pos, + std::forward<_Args>(__args)...); + } +# 519 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + insert(const value_type& __x) + { return _M_t._M_insert_equal(__x); } + + + template<typename _Pair, typename = typename + std::enable_if<std::is_constructible<value_type, + _Pair&&>::value>::type> + iterator + insert(_Pair&& __x) + { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); } +# 552 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + + insert(const_iterator __position, const value_type& __x) + + + + { return _M_t._M_insert_equal_(__position, __x); } + + + template<typename _Pair, typename = typename + std::enable_if<std::is_constructible<value_type, + _Pair&&>::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { return _M_t._M_insert_equal_(__position, + std::forward<_Pair>(__x)); } +# 579 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename _InputIterator> + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_equal(__first, __last); } +# 592 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + void + insert(initializer_list<value_type> __l) + { this->insert(__l.begin(), __l.end()); } +# 613 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } + + + __attribute ((__abi_tag__ ("cxx11"))) + iterator + erase(iterator __position) + { return _M_t.erase(__position); } +# 649 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } +# 670 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +# 705 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + void + swap(multimap& __x) + + noexcept(_Alloc_traits::_S_nothrow_swap()) + + { _M_t.swap(__x._M_t); } + + + + + + + + void + clear() noexcept + { _M_t.clear(); } + + + + + + + key_compare + key_comp() const + { return _M_t.key_comp(); } + + + + + + value_compare + value_comp() const + { return value_compare(_M_t.key_comp()); } +# 753 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + + template<typename _Kt> + auto + find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) + { return _M_t._M_find_tr(__x); } +# 777 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + + + template<typename _Kt> + auto + find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) + { return _M_t._M_find_tr(__x); } +# 795 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + size_type + count(const key_type& __x) const + { return _M_t.count(__x); } + + + template<typename _Kt> + auto + count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) + { return _M_t._M_count_tr(__x); } +# 819 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + lower_bound(const key_type& __x) + { return _M_t.lower_bound(__x); } + + + template<typename _Kt> + auto + lower_bound(const _Kt& __x) + -> decltype(_M_t._M_lower_bound_tr(__x)) + { return _M_t._M_lower_bound_tr(__x); } +# 844 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + const_iterator + lower_bound(const key_type& __x) const + { return _M_t.lower_bound(__x); } + + + template<typename _Kt> + auto + lower_bound(const _Kt& __x) const + -> decltype(_M_t._M_lower_bound_tr(__x)) + { return _M_t._M_lower_bound_tr(__x); } +# 864 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + iterator + upper_bound(const key_type& __x) + { return _M_t.upper_bound(__x); } + + + template<typename _Kt> + auto + upper_bound(const _Kt& __x) + -> decltype(_M_t._M_upper_bound_tr(__x)) + { return _M_t._M_upper_bound_tr(__x); } +# 884 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + const_iterator + upper_bound(const key_type& __x) const + { return _M_t.upper_bound(__x); } + + + template<typename _Kt> + auto + upper_bound(const _Kt& __x) const + -> decltype(_M_t._M_upper_bound_tr(__x)) + { return _M_t._M_upper_bound_tr(__x); } +# 911 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + std::pair<iterator, iterator> + equal_range(const key_type& __x) + { return _M_t.equal_range(__x); } + + + template<typename _Kt> + auto + equal_range(const _Kt& __x) + -> decltype(_M_t._M_equal_range_tr(__x)) + { return _M_t._M_equal_range_tr(__x); } +# 938 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + std::pair<const_iterator, const_iterator> + equal_range(const key_type& __x) const + { return _M_t.equal_range(__x); } + + + template<typename _Kt> + auto + equal_range(const _Kt& __x) const + -> decltype(_M_t._M_equal_range_tr(__x)) + { return _M_t._M_equal_range_tr(__x); } + + + + template<typename _K1, typename _T1, typename _C1, typename _A1> + friend bool + operator==(const multimap<_K1, _T1, _C1, _A1>&, + const multimap<_K1, _T1, _C1, _A1>&); + + template<typename _K1, typename _T1, typename _C1, typename _A1> + friend bool + operator<(const multimap<_K1, _T1, _C1, _A1>&, + const multimap<_K1, _T1, _C1, _A1>&); + }; +# 972 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return __x._M_t == __y._M_t; } +# 989 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/bits/stl_multimap.h" 3 + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return __x._M_t < __y._M_t; } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + + template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> + inline void + swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, + multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { __x.swap(__y); } + + +} +# 63 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/5.3.1/map" 2 3 +# 58 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" 2 + + + + + + + + +# 65 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +template <typename T> +struct QMetaTypeId2; + +template <typename T> +inline constexpr int qMetaTypeId(); +# 217 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +class QDataStream; +class QMetaTypeInterface; +struct QMetaObject; + +namespace QtPrivate +{ + + + + +template<typename From, typename To> +To convertImplicit(const From& from) +{ + return from; +} + + +struct AbstractDebugStreamFunction +{ + typedef void (*Stream)(const AbstractDebugStreamFunction *, QDebug&, const void *); + typedef void (*Destroy)(AbstractDebugStreamFunction *); + explicit AbstractDebugStreamFunction(Stream s = nullptr, Destroy d = nullptr) + : stream(s), destroy(d) {} + AbstractDebugStreamFunction(const AbstractDebugStreamFunction &) = delete; AbstractDebugStreamFunction &operator=(const AbstractDebugStreamFunction &) = delete; + Stream stream; + Destroy destroy; +}; + +template<typename T> +struct BuiltInDebugStreamFunction : public AbstractDebugStreamFunction +{ + BuiltInDebugStreamFunction() + : AbstractDebugStreamFunction(stream, destroy) {} + static void stream(const AbstractDebugStreamFunction *, QDebug& dbg, const void *r) + { + const T *rhs = static_cast<const T *>(r); + operator<<(dbg, *rhs); + } + + static void destroy(AbstractDebugStreamFunction *_this) + { + delete static_cast<BuiltInDebugStreamFunction *>(_this); + } +}; + + +struct AbstractComparatorFunction +{ + typedef bool (*LessThan)(const AbstractComparatorFunction *, const void *, const void *); + typedef bool (*Equals)(const AbstractComparatorFunction *, const void *, const void *); + typedef void (*Destroy)(AbstractComparatorFunction *); + explicit AbstractComparatorFunction(LessThan lt = nullptr, Equals e = nullptr, Destroy d = nullptr) + : lessThan(lt), equals(e), destroy(d) {} + AbstractComparatorFunction(const AbstractComparatorFunction &) = delete; AbstractComparatorFunction &operator=(const AbstractComparatorFunction &) = delete; + LessThan lessThan; + Equals equals; + Destroy destroy; +}; + +template<typename T> +struct BuiltInComparatorFunction : public AbstractComparatorFunction +{ + BuiltInComparatorFunction() + : AbstractComparatorFunction(lessThan, equals, destroy) {} + static bool lessThan(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast<const T *>(l); + const T *rhs = static_cast<const T *>(r); + return *lhs < *rhs; + } + + static bool equals(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast<const T *>(l); + const T *rhs = static_cast<const T *>(r); + return *lhs == *rhs; + } + + static void destroy(AbstractComparatorFunction *_this) + { + delete static_cast<BuiltInComparatorFunction *>(_this); + } +}; + +template<typename T> +struct BuiltInEqualsComparatorFunction : public AbstractComparatorFunction +{ + BuiltInEqualsComparatorFunction() + : AbstractComparatorFunction(nullptr, equals, destroy) {} + static bool equals(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast<const T *>(l); + const T *rhs = static_cast<const T *>(r); + return *lhs == *rhs; + } + + static void destroy(AbstractComparatorFunction *_this) + { + delete static_cast<BuiltInEqualsComparatorFunction *>(_this); + } +}; + +struct AbstractConverterFunction +{ + typedef bool (*Converter)(const AbstractConverterFunction *, const void *, void*); + explicit AbstractConverterFunction(Converter c = nullptr) + : convert(c) {} + AbstractConverterFunction(const AbstractConverterFunction &) = delete; AbstractConverterFunction &operator=(const AbstractConverterFunction &) = delete; + Converter convert; +}; + +template<typename From, typename To> +struct ConverterMemberFunction : public AbstractConverterFunction +{ + explicit ConverterMemberFunction(To(From::*function)() const) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterMemberFunction(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast<const From *>(in); + To *t = static_cast<To *>(out); + const ConverterMemberFunction *_typedThis = + static_cast<const ConverterMemberFunction *>(_this); + *t = (f->*_typedThis->m_function)(); + return true; + } + + To(From::* const m_function)() const; +}; + +template<typename From, typename To> +struct ConverterMemberFunctionOk : public AbstractConverterFunction +{ + explicit ConverterMemberFunctionOk(To(From::*function)(bool *) const) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterMemberFunctionOk(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast<const From *>(in); + To *t = static_cast<To *>(out); + bool ok = false; + const ConverterMemberFunctionOk *_typedThis = + static_cast<const ConverterMemberFunctionOk *>(_this); + *t = (f->*_typedThis->m_function)(&ok); + if (!ok) + *t = To(); + return ok; + } + + To(From::* const m_function)(bool*) const; +}; + +template<typename From, typename To, typename UnaryFunction> +struct ConverterFunctor : public AbstractConverterFunction +{ + explicit ConverterFunctor(UnaryFunction function) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterFunctor(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast<const From *>(in); + To *t = static_cast<To *>(out); + const ConverterFunctor *_typedThis = + static_cast<const ConverterFunctor *>(_this); + *t = _typedThis->m_function(*f); + return true; + } + + UnaryFunction m_function; +}; + + template<typename T, bool> + struct ValueTypeIsMetaType; + template<typename T, bool> + struct AssociativeValueTypeIsMetaType; + template<typename T, bool> + struct IsMetaTypePair; + template<typename, typename> + struct MetaTypeSmartPointerHelper; +} + +class __attribute__((visibility("default"))) QMetaType { + enum ExtensionFlag { NoExtensionFlags, + CreateEx = 0x1, DestroyEx = 0x2, + ConstructEx = 0x4, DestructEx = 0x8, + NameEx = 0x10, SizeEx = 0x20, + CtorEx = 0x40, DtorEx = 0x80, + FlagsEx = 0x100, MetaObjectEx = 0x200 + }; +public: + + + enum Type { + + Void = 43, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36, UChar = 37, Float = 38, SChar = 40, VoidStar = 31, QChar = 7, QString = 10, QStringList = 11, QByteArray = 12, QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17, QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22, QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27, QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, QRegularExpression = 44, QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, QPersistentModelIndex = 50, QObjectStar = 39, QVariantMap = 8, QVariantList = 9, QVariantHash = 28, QByteArrayList = 49, QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, QSizePolicy = 121, + + FirstCoreType = Bool, + LastCoreType = QPersistentModelIndex, + FirstGuiType = QFont, + LastGuiType = QPolygonF, + FirstWidgetsType = QSizePolicy, + LastWidgetsType = QSizePolicy, + HighestInternalId = LastWidgetsType, + + QReal = sizeof(qreal) == sizeof(double) ? Double : Float, + + UnknownType = 0, + User = 1024 + }; +# 456 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + enum TypeFlag { + NeedsConstruction = 0x1, + NeedsDestruction = 0x2, + MovableType = 0x4, + PointerToQObject = 0x8, + IsEnumeration = 0x10, + SharedPointerToQObject = 0x20, + WeakPointerToQObject = 0x40, + TrackingPointerToQObject = 0x80, + WasDeclaredAsMetaType = 0x100, + IsGadget = 0x200 + }; + typedef QFlags<TypeFlag> TypeFlags; + + typedef void (*Deleter)(void *); + typedef void *(*Creator)(const void *); + + typedef void (*Destructor)(void *); + typedef void *(*Constructor)(void *, const void *); + + typedef void (*SaveOperator)(QDataStream &, const void *); + typedef void (*LoadOperator)(QDataStream &, void *); + + static void registerStreamOperators(const char *typeName, SaveOperator saveOp, + LoadOperator loadOp); + static void registerStreamOperators(int type, SaveOperator saveOp, + LoadOperator loadOp); + + static int registerType(const char *typeName, Deleter deleter, + Creator creator); + static int registerType(const char *typeName, Deleter deleter, + Creator creator, + Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static bool unregisterType(int type); + static int registerNormalizedType(const ::QByteArray &normalizedTypeName, Deleter deleter, + Creator creator, + Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static int registerNormalizedType(const ::QByteArray &normalizedTypeName, Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static int registerTypedef(const char *typeName, int aliasId); + static int registerNormalizedTypedef(const ::QByteArray &normalizedTypeName, int aliasId); + static int type(const char *typeName); + + static int type(const ::QByteArray &typeName); + + + + static const char *typeName(int type); + static int sizeOf(int type); + static TypeFlags typeFlags(int type); + static const QMetaObject *metaObjectForType(int type); + static bool isRegistered(int type); + static void *create(int type, const void *copy = nullptr); + + + + + static void destroy(int type, void *data); + static void *construct(int type, void *where, const void *copy); + static void destruct(int type, void *where); + + + static bool save(QDataStream &stream, int type, const void *data); + static bool load(QDataStream &stream, int type, void *data); + + + explicit QMetaType(const int type); + inline ~QMetaType(); + + inline bool isValid() const; + inline bool isRegistered() const; + inline int sizeOf() const; + inline TypeFlags flags() const; + inline const QMetaObject *metaObject() const; + + inline void *create(const void *copy = nullptr) const; + inline void destroy(void *data) const; + inline void *construct(void *where, const void *copy = nullptr) const; + inline void destruct(void *data) const; + +public: + template<typename T> + static bool registerComparators() + { + static_assert(bool((!QMetaTypeId2<T>::IsBuiltIn)), "QMetaType::registerComparators: The type must be a custom type.") + ; + + const int typeId = qMetaTypeId<T>(); + static const QtPrivate::BuiltInComparatorFunction<T> f; + return registerComparatorFunction( &f, typeId); + } + template<typename T> + static bool registerEqualsComparator() + { + static_assert(bool((!QMetaTypeId2<T>::IsBuiltIn)), "QMetaType::registerEqualsComparator: The type must be a custom type.") + ; + const int typeId = qMetaTypeId<T>(); + static const QtPrivate::BuiltInEqualsComparatorFunction<T> f; + return registerComparatorFunction( &f, typeId); + } + + template<typename T> + static bool hasRegisteredComparators() + { + return hasRegisteredComparators(qMetaTypeId<T>()); + } + static bool hasRegisteredComparators(int typeId); + + + + template<typename T> + static bool registerDebugStreamOperator() + { + static_assert(bool((!QMetaTypeId2<T>::IsBuiltIn)), "QMetaType::registerDebugStreamOperator: The type must be a custom type.") + ; + + const int typeId = qMetaTypeId<T>(); + static const QtPrivate::BuiltInDebugStreamFunction<T> f; + return registerDebugStreamOperatorFunction(&f, typeId); + } + template<typename T> + static bool hasRegisteredDebugStreamOperator() + { + return hasRegisteredDebugStreamOperator(qMetaTypeId<T>()); + } + static bool hasRegisteredDebugStreamOperator(int typeId); + + + + template<typename From, typename To> + static bool registerConverter() + { + return registerConverter<From, To>(QtPrivate::convertImplicit<From, To>); + } + + + + + + + + template<typename From, typename To> + static bool registerConverter(To(From::*function)() const) + { + static_assert(bool((!QMetaTypeId2<To>::IsBuiltIn || !QMetaTypeId2<From>::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type.") + ; + + const int fromTypeId = qMetaTypeId<From>(); + const int toTypeId = qMetaTypeId<To>(); + static const QtPrivate::ConverterMemberFunction<From, To> f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } + + + template<typename From, typename To> + static bool registerConverter(To(From::*function)(bool*) const) + { + static_assert(bool((!QMetaTypeId2<To>::IsBuiltIn || !QMetaTypeId2<From>::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type.") + ; + + const int fromTypeId = qMetaTypeId<From>(); + const int toTypeId = qMetaTypeId<To>(); + static const QtPrivate::ConverterMemberFunctionOk<From, To> f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } + + + template<typename From, typename To, typename UnaryFunction> + static bool registerConverter(UnaryFunction function) + { + static_assert(bool((!QMetaTypeId2<To>::IsBuiltIn || !QMetaTypeId2<From>::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type.") + ; + + const int fromTypeId = qMetaTypeId<From>(); + const int toTypeId = qMetaTypeId<To>(); + static const QtPrivate::ConverterFunctor<From, To, UnaryFunction> f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } + + + static bool convert(const void *from, int fromTypeId, void *to, int toTypeId); + static bool compare(const void *lhs, const void *rhs, int typeId, int* result); + static bool equals(const void *lhs, const void *rhs, int typeId, int* result); + static bool debugStream(QDebug& dbg, const void *rhs, int typeId); + + template<typename From, typename To> + static bool hasRegisteredConverterFunction() + { + return hasRegisteredConverterFunction(qMetaTypeId<From>(), qMetaTypeId<To>()); + } + + static bool hasRegisteredConverterFunction(int fromTypeId, int toTypeId); + +private: + static QMetaType typeInfo(const int type); + inline QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeInterface *info, + Creator creator, + Deleter deleter, + SaveOperator saveOp, + LoadOperator loadOp, + Constructor constructor, + Destructor destructor, + uint sizeOf, + uint theTypeFlags, + int typeId, + const QMetaObject *metaObject); + QMetaType(const QMetaType &other); + QMetaType &operator =(const QMetaType &); + inline bool isExtended(const ExtensionFlag flag) const { return m_extensionFlags & flag; } + + + void ctor(const QMetaTypeInterface *info); + void dtor(); + uint sizeExtended() const; + QMetaType::TypeFlags flagsExtended() const; + const QMetaObject *metaObjectExtended() const; + void *createExtended(const void *copy = nullptr) const; + void destroyExtended(void *data) const; + void *constructExtended(void *where, const void *copy = nullptr) const; + void destructExtended(void *data) const; + + static bool registerComparatorFunction(const QtPrivate::AbstractComparatorFunction *f, int type); + + static bool registerDebugStreamOperatorFunction(const QtPrivate::AbstractDebugStreamFunction *f, int type); + + + + + + template<typename, bool> friend struct QtPrivate::ValueTypeIsMetaType; + template<typename, typename> friend struct QtPrivate::ConverterMemberFunction; + template<typename, typename> friend struct QtPrivate::ConverterMemberFunctionOk; + template<typename, typename, typename> friend struct QtPrivate::ConverterFunctor; + template<typename, bool> friend struct QtPrivate::AssociativeValueTypeIsMetaType; + template<typename, bool> friend struct QtPrivate::IsMetaTypePair; + template<typename, typename> friend struct QtPrivate::MetaTypeSmartPointerHelper; + + + + + static bool registerConverterFunction(const QtPrivate::AbstractConverterFunction *f, int from, int to); + static void unregisterConverterFunction(int from, int to); +private: + + Creator m_creator_unused; + Deleter m_deleter_unused; + SaveOperator m_saveOp; + LoadOperator m_loadOp; + Constructor m_constructor; + Destructor m_destructor; + void *m_extension; + uint m_size; + uint m_typeFlags; + uint m_extensionFlags; + int m_typeId; + const QMetaObject *m_metaObject; +}; + + + +constexpr inline QFlags<QMetaType::TypeFlags::enum_type> operator|(QMetaType::TypeFlags::enum_type f1, QMetaType::TypeFlags::enum_type f2) noexcept { return QFlags<QMetaType::TypeFlags::enum_type>(f1) | f2; } constexpr inline QFlags<QMetaType::TypeFlags::enum_type> operator|(QMetaType::TypeFlags::enum_type f1, QFlags<QMetaType::TypeFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QMetaType::TypeFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + +namespace QtPrivate { + +template<typename From, typename To> +ConverterMemberFunction<From, To>::~ConverterMemberFunction() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId<From>(), qMetaTypeId<To>()); +} +template<typename From, typename To> +ConverterMemberFunctionOk<From, To>::~ConverterMemberFunctionOk() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId<From>(), qMetaTypeId<To>()); +} +template<typename From, typename To, typename UnaryFunction> +ConverterFunctor<From, To, UnaryFunction>::~ConverterFunctor() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId<From>(), qMetaTypeId<To>()); +} + +} + + + + + + +namespace QtMetaTypePrivate { +template <typename T, bool Accepted = true> +struct QMetaTypeFunctionHelper { + static void Destruct(void *t) + { + (void)t; + static_cast<T*>(t)->~T(); + } + + static void *Construct(void *where, const void *t) + { + if (t) + return new (where) T(*static_cast<const T*>(t)); + return new (where) T; + } + + static void Save(QDataStream &stream, const void *t) + { + stream << *static_cast<const T*>(t); + } + + static void Load(QDataStream &stream, void *t) + { + stream >> *static_cast<T*>(t); + } + +}; + +template <typename T> +struct QMetaTypeFunctionHelper<T, false> { + static void Destruct(void *) {} + static void *Construct(void *, const void *) { return nullptr; } + + static void Save(QDataStream &, const void *) {} + static void Load(QDataStream &, void *) {} + +}; +template <> +struct QMetaTypeFunctionHelper<void, true> + : public QMetaTypeFunctionHelper<void, false> +{}; + +struct VariantData +{ + VariantData(const int metaTypeId_, + const void *data_, + const uint flags_) + : metaTypeId(metaTypeId_) + , data(data_) + , flags(flags_) + { + } + VariantData(const VariantData &other) + : metaTypeId(other.metaTypeId), data(other.data), flags(other.flags){} + const int metaTypeId; + const void *data; + const uint flags; +private: + + VariantData &operator=(const VariantData &) = delete; +}; + +template<typename const_iterator> +struct IteratorOwnerCommon +{ + static void assign(void **ptr, const_iterator iterator) + { + *ptr = new const_iterator(iterator); + } + static void assign(void **ptr, void * const * src) + { + *ptr = new const_iterator(*static_cast<const_iterator*>(*src)); + } + + static void advance(void **iterator, int step) + { + const_iterator &it = *static_cast<const_iterator*>(*iterator); + std::advance(it, step); + } + + static void destroy(void **ptr) + { + delete static_cast<const_iterator*>(*ptr); + } + + static bool equal(void * const *it, void * const *other) + { + return *static_cast<const_iterator*>(*it) == *static_cast<const_iterator*>(*other); + } +}; + +template<typename const_iterator> +struct IteratorOwner : IteratorOwnerCommon<const_iterator> +{ + static const void *getData(void * const *iterator) + { + return &**static_cast<const_iterator*>(*iterator); + } + + static const void *getData(const_iterator it) + { + return &*it; + } +}; + +struct __attribute__((visibility("default"))) VectorBoolElements +{ + static const bool true_element; + static const bool false_element; +}; + +template<> +struct IteratorOwner<std::vector<bool>::const_iterator> : IteratorOwnerCommon<std::vector<bool>::const_iterator> +{ +public: + static const void *getData(void * const *iterator) + { + return **static_cast<std::vector<bool>::const_iterator*>(*iterator) ? + &VectorBoolElements::true_element : &VectorBoolElements::false_element; + } + + static const void *getData(const std::vector<bool>::const_iterator& it) + { + return *it ? &VectorBoolElements::true_element : &VectorBoolElements::false_element; + } +}; + +template<typename value_type> +struct IteratorOwner<const value_type*> +{ +private: + + + + struct Dummy {}; + typedef typename QtPrivate::if_<QtPrivate::is_same<value_type, void*>::value, Dummy, value_type>::type value_type_OR_Dummy; +public: + static void assign(void **ptr, const value_type_OR_Dummy *iterator ) + { + *ptr = const_cast<value_type*>(iterator); + } + static void assign(void **ptr, void * const * src) + { + *ptr = static_cast<value_type*>(*src); + } + + static void advance(void **iterator, int step) + { + value_type *it = static_cast<value_type*>(*iterator); + std::advance(it, step); + *iterator = it; + } + + static void destroy(void **) + { + } + + static const void *getData(void * const *iterator) + { + return *iterator; + } + + static const void *getData(const value_type_OR_Dummy *it) + { + return it; + } + + static bool equal(void * const *it, void * const *other) + { + return static_cast<value_type*>(*it) == static_cast<value_type*>(*other); + } +}; + +enum IteratorCapability +{ + ForwardCapability = 1, + BiDirectionalCapability = 2, + RandomAccessCapability = 4 +}; + +template<typename T, typename Category = typename std::iterator_traits<typename T::const_iterator>::iterator_category> +struct CapabilitiesImpl; + +template<typename T> +struct CapabilitiesImpl<T, std::forward_iterator_tag> +{ enum { IteratorCapabilities = ForwardCapability }; }; +template<typename T> +struct CapabilitiesImpl<T, std::bidirectional_iterator_tag> +{ enum { IteratorCapabilities = BiDirectionalCapability | ForwardCapability }; }; +template<typename T> +struct CapabilitiesImpl<T, std::random_access_iterator_tag> +{ enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; }; + +template<typename T> +struct ContainerAPI : CapabilitiesImpl<T> +{ + static int size(const T *t) { return int(std::distance(t->begin(), t->end())); } +}; + +template<typename T> +struct ContainerAPI<QList<T> > : CapabilitiesImpl<QList<T> > +{ static int size(const QList<T> *t) { return t->size(); } }; + +template<typename T> +struct ContainerAPI<QVector<T> > : CapabilitiesImpl<QVector<T> > +{ static int size(const QVector<T> *t) { return t->size(); } }; + +template<typename T> +struct ContainerAPI<std::vector<T> > : CapabilitiesImpl<std::vector<T> > +{ static int size(const std::vector<T> *t) { return int(t->size()); } }; + +template<typename T> +struct ContainerAPI<std::list<T> > : CapabilitiesImpl<std::list<T> > +{ static int size(const std::list<T> *t) { return int(t->size()); } }; + +class QSequentialIterableImpl +{ +public: + const void * _iterable; + void *_iterator; + int _metaType_id; + uint _metaType_flags; + uint _iteratorCapabilities; + typedef int(*sizeFunc)(const void *p); + typedef const void * (*atFunc)(const void *p, int); + typedef void (*moveIteratorFunc)(const void *p, void **); + typedef void (*advanceFunc)(void **p, int); + typedef VariantData (*getFunc)( void * const *p, int metaTypeId, uint flags); + typedef void (*destroyIterFunc)(void **p); + typedef bool (*equalIterFunc)(void * const *p, void * const *other); + typedef void (*copyIterFunc)(void **, void * const *); + + sizeFunc _size; + atFunc _at; + moveIteratorFunc _moveToBegin; + moveIteratorFunc _moveToEnd; + advanceFunc _advance; + getFunc _get; + destroyIterFunc _destroyIter; + equalIterFunc _equalIter; + copyIterFunc _copyIter; + + template<class T> + static int sizeImpl(const void *p) + { return ContainerAPI<T>::size(static_cast<const T*>(p)); } + + template<class T> + static const void* atImpl(const void *p, int idx) + { + typename T::const_iterator i = static_cast<const T*>(p)->begin(); + std::advance(i, idx); + return IteratorOwner<typename T::const_iterator>::getData(i); + } + + template<class T> + static void moveToBeginImpl(const void *container, void **iterator) + { IteratorOwner<typename T::const_iterator>::assign(iterator, static_cast<const T*>(container)->begin()); } + + template<class T> + static void moveToEndImpl(const void *container, void **iterator) + { IteratorOwner<typename T::const_iterator>::assign(iterator, static_cast<const T*>(container)->end()); } + + template<class T> + static VariantData getImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, IteratorOwner<typename T::const_iterator>::getData(iterator), flags); } + +public: + template<class T> QSequentialIterableImpl(const T*p) + : _iterable(p) + , _iterator(nullptr) + , _metaType_id(qMetaTypeId<typename T::value_type>()) + , _metaType_flags(QTypeInfo<typename T::value_type>::isPointer) + , _iteratorCapabilities(ContainerAPI<T>::IteratorCapabilities) + , _size(sizeImpl<T>) + , _at(atImpl<T>) + , _moveToBegin(moveToBeginImpl<T>) + , _moveToEnd(moveToEndImpl<T>) + , _advance(IteratorOwner<typename T::const_iterator>::advance) + , _get(getImpl<T>) + , _destroyIter(IteratorOwner<typename T::const_iterator>::destroy) + , _equalIter(IteratorOwner<typename T::const_iterator>::equal) + , _copyIter(IteratorOwner<typename T::const_iterator>::assign) + { + } + + QSequentialIterableImpl() + : _iterable(nullptr) + , _iterator(nullptr) + , _metaType_id(QMetaType::UnknownType) + , _metaType_flags(0) + , _iteratorCapabilities(0) + , _size(nullptr) + , _at(nullptr) + , _moveToBegin(nullptr) + , _moveToEnd(nullptr) + , _advance(nullptr) + , _get(nullptr) + , _destroyIter(nullptr) + , _equalIter(nullptr) + , _copyIter(nullptr) + { + } + + inline void moveToBegin() { _moveToBegin(_iterable, &_iterator); } + inline void moveToEnd() { _moveToEnd(_iterable, &_iterator); } + inline bool equal(const QSequentialIterableImpl&other) const { return _equalIter(&_iterator, &other._iterator); } + inline QSequentialIterableImpl &advance(int i) { + do { } while ((false) && (i > 0 || _iteratorCapabilities & BiDirectionalCapability)); + _advance(&_iterator, i); + return *this; + } + + inline VariantData getCurrent() const { return _get(&_iterator, _metaType_id, _metaType_flags); } + + VariantData at(int idx) const + { return VariantData(_metaType_id, _at(_iterable, idx), _metaType_flags); } + + int size() const { do { } while ((false) && (_iterable)); return _size(_iterable); } + + inline void destroyIter() { _destroyIter(&_iterator); } + + void copy(const QSequentialIterableImpl &other) + { + *this = other; + _copyIter(&_iterator, &other._iterator); + } +}; +} template<> class QTypeInfo<QtMetaTypePrivate:: QSequentialIterableImpl > { public: enum { isComplex = ((((Q_MOVABLE_TYPE)) & Q_PRIMITIVE_TYPE) == 0), isStatic = ((((Q_MOVABLE_TYPE)) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || (((Q_MOVABLE_TYPE)) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QtMetaTypePrivate:: QSequentialIterableImpl)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QtMetaTypePrivate:: QSequentialIterableImpl >::value, isDummy = ((((Q_MOVABLE_TYPE)) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QtMetaTypePrivate:: QSequentialIterableImpl) }; static inline const char *name() { return "QtMetaTypePrivate:: QSequentialIterableImpl"; } }; namespace QtMetaTypePrivate { + +template<typename From> +struct QSequentialIterableConvertFunctor +{ + QSequentialIterableImpl operator()(const From &f) const + { + return QSequentialIterableImpl(&f); + } +}; +} + +namespace QtMetaTypePrivate { +template<typename T, bool = QtPrivate::is_same<typename T::const_iterator::value_type, typename T::mapped_type>::value> +struct AssociativeContainerAccessor +{ + static const typename T::key_type& getKey(const typename T::const_iterator &it) + { + return it.key(); + } + + static const typename T::mapped_type& getValue(const typename T::const_iterator &it) + { + return it.value(); + } +}; + +template<typename T, bool = QtPrivate::is_same<typename T::const_iterator::value_type, std::pair<const typename T::key_type, typename T::mapped_type> >::value> +struct StlStyleAssociativeContainerAccessor; + +template<typename T> +struct StlStyleAssociativeContainerAccessor<T, true> +{ + static const typename T::key_type& getKey(const typename T::const_iterator &it) + { + return it->first; + } + + static const typename T::mapped_type& getValue(const typename T::const_iterator &it) + { + return it->second; + } +}; + +template<typename T> +struct AssociativeContainerAccessor<T, false> : public StlStyleAssociativeContainerAccessor<T> +{ +}; + +class QAssociativeIterableImpl +{ +public: + const void *_iterable; + void *_iterator; + int _metaType_id_key; + uint _metaType_flags_key; + int _metaType_id_value; + uint _metaType_flags_value; + typedef int(*sizeFunc)(const void *p); + typedef void (*findFunc)(const void *container, const void *p, void **iterator); + typedef void (*beginFunc)(const void *p, void **); + typedef void (*advanceFunc)(void **p, int); + typedef VariantData (*getFunc)(void * const *p, int metaTypeId, uint flags); + typedef void (*destroyIterFunc)(void **p); + typedef bool (*equalIterFunc)(void * const *p, void * const *other); + typedef void (*copyIterFunc)(void **, void * const *); + + sizeFunc _size; + findFunc _find; + beginFunc _begin; + beginFunc _end; + advanceFunc _advance; + getFunc _getKey; + getFunc _getValue; + destroyIterFunc _destroyIter; + equalIterFunc _equalIter; + copyIterFunc _copyIter; + + template<class T> + static int sizeImpl(const void *p) + { return int(std::distance(static_cast<const T*>(p)->begin(), + static_cast<const T*>(p)->end())); } + + template<class T> + static void findImpl(const void *container, const void *p, void **iterator) + { IteratorOwner<typename T::const_iterator>::assign(iterator, + static_cast<const T*>(container)->find(*static_cast<const typename T::key_type*>(p))); } + + template<class T> + static void advanceImpl(void **p, int step) + { std::advance(*static_cast<typename T::const_iterator*>(*p), step); } + + template<class T> + static void beginImpl(const void *container, void **iterator) + { IteratorOwner<typename T::const_iterator>::assign(iterator, static_cast<const T*>(container)->begin()); } + + template<class T> + static void endImpl(const void *container, void **iterator) + { IteratorOwner<typename T::const_iterator>::assign(iterator, static_cast<const T*>(container)->end()); } + + template<class T> + static VariantData getKeyImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &AssociativeContainerAccessor<T>::getKey(*static_cast<typename T::const_iterator*>(*iterator)), flags); } + + template<class T> + static VariantData getValueImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &AssociativeContainerAccessor<T>::getValue(*static_cast<typename T::const_iterator*>(*iterator)), flags); } + +public: + template<class T> QAssociativeIterableImpl(const T*p) + : _iterable(p) + , _metaType_id_key(qMetaTypeId<typename T::key_type>()) + , _metaType_flags_key(QTypeInfo<typename T::key_type>::isPointer) + , _metaType_id_value(qMetaTypeId<typename T::mapped_type>()) + , _metaType_flags_value(QTypeInfo<typename T::mapped_type>::isPointer) + , _size(sizeImpl<T>) + , _find(findImpl<T>) + , _begin(beginImpl<T>) + , _end(endImpl<T>) + , _advance(advanceImpl<T>) + , _getKey(getKeyImpl<T>) + , _getValue(getValueImpl<T>) + , _destroyIter(IteratorOwner<typename T::const_iterator>::destroy) + , _equalIter(IteratorOwner<typename T::const_iterator>::equal) + , _copyIter(IteratorOwner<typename T::const_iterator>::assign) + { + } + + QAssociativeIterableImpl() + : _iterable(nullptr) + , _metaType_id_key(QMetaType::UnknownType) + , _metaType_flags_key(0) + , _metaType_id_value(QMetaType::UnknownType) + , _metaType_flags_value(0) + , _size(nullptr) + , _find(nullptr) + , _begin(nullptr) + , _end(nullptr) + , _advance(nullptr) + , _getKey(nullptr) + , _getValue(nullptr) + , _destroyIter(nullptr) + , _equalIter(nullptr) + , _copyIter(nullptr) + { + } + + inline void begin() { _begin(_iterable, &_iterator); } + inline void end() { _end(_iterable, &_iterator); } + inline bool equal(const QAssociativeIterableImpl&other) const { return _equalIter(&_iterator, &other._iterator); } + inline QAssociativeIterableImpl &advance(int i) { _advance(&_iterator, i); return *this; } + + inline void destroyIter() { _destroyIter(&_iterator); } + + inline VariantData getCurrentKey() const { return _getKey(&_iterator, _metaType_id_key, _metaType_flags_key); } + inline VariantData getCurrentValue() const { return _getValue(&_iterator, _metaType_id_value, _metaType_flags_value); } + + inline void find(const VariantData &key) + { _find(_iterable, key.data, &_iterator); } + + int size() const { do { } while ((false) && (_iterable)); return _size(_iterable); } + + void copy(const QAssociativeIterableImpl &other) + { + *this = other; + _copyIter(&_iterator, &other._iterator); + } +}; +} template<> class QTypeInfo<QtMetaTypePrivate:: QAssociativeIterableImpl > { public: enum { isComplex = ((((Q_MOVABLE_TYPE)) & Q_PRIMITIVE_TYPE) == 0), isStatic = ((((Q_MOVABLE_TYPE)) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || (((Q_MOVABLE_TYPE)) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QtMetaTypePrivate:: QAssociativeIterableImpl)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QtMetaTypePrivate:: QAssociativeIterableImpl >::value, isDummy = ((((Q_MOVABLE_TYPE)) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QtMetaTypePrivate:: QAssociativeIterableImpl) }; static inline const char *name() { return "QtMetaTypePrivate:: QAssociativeIterableImpl"; } }; namespace QtMetaTypePrivate { + +template<typename From> +struct QAssociativeIterableConvertFunctor +{ + QAssociativeIterableImpl operator()(const From& f) const + { + return QAssociativeIterableImpl(&f); + } +}; + +class QPairVariantInterfaceImpl +{ + const void *_pair; + int _metaType_id_first; + uint _metaType_flags_first; + int _metaType_id_second; + uint _metaType_flags_second; + + typedef VariantData (*getFunc)(const void * const *p, int metaTypeId, uint flags); + + getFunc _getFirst; + getFunc _getSecond; + + template<class T> + static VariantData getFirstImpl(const void * const *pair, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &static_cast<const T*>(*pair)->first, flags); } + template<class T> + static VariantData getSecondImpl(const void * const *pair, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &static_cast<const T*>(*pair)->second, flags); } + +public: + template<class T> QPairVariantInterfaceImpl(const T*p) + : _pair(p) + , _metaType_id_first(qMetaTypeId<typename T::first_type>()) + , _metaType_flags_first(QTypeInfo<typename T::first_type>::isPointer) + , _metaType_id_second(qMetaTypeId<typename T::second_type>()) + , _metaType_flags_second(QTypeInfo<typename T::second_type>::isPointer) + , _getFirst(getFirstImpl<T>) + , _getSecond(getSecondImpl<T>) + { + } + + QPairVariantInterfaceImpl() + : _pair(nullptr) + , _metaType_id_first(QMetaType::UnknownType) + , _metaType_flags_first(0) + , _metaType_id_second(QMetaType::UnknownType) + , _metaType_flags_second(0) + , _getFirst(nullptr) + , _getSecond(nullptr) + { + } + + inline VariantData first() const { return _getFirst(&_pair, _metaType_id_first, _metaType_flags_first); } + inline VariantData second() const { return _getSecond(&_pair, _metaType_id_second, _metaType_flags_second); } +}; +} template<> class QTypeInfo<QtMetaTypePrivate:: QPairVariantInterfaceImpl > { public: enum { isComplex = ((((Q_MOVABLE_TYPE)) & Q_PRIMITIVE_TYPE) == 0), isStatic = ((((Q_MOVABLE_TYPE)) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || (((Q_MOVABLE_TYPE)) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QtMetaTypePrivate:: QPairVariantInterfaceImpl)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QtMetaTypePrivate:: QPairVariantInterfaceImpl >::value, isDummy = ((((Q_MOVABLE_TYPE)) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QtMetaTypePrivate:: QPairVariantInterfaceImpl) }; static inline const char *name() { return "QtMetaTypePrivate:: QPairVariantInterfaceImpl"; } }; namespace QtMetaTypePrivate { + +template<typename From> +struct QPairVariantInterfaceConvertFunctor; + +template<typename T, typename U> +struct QPairVariantInterfaceConvertFunctor<QPair<T, U> > +{ + QPairVariantInterfaceImpl operator()(const QPair<T, U>& f) const + { + return QPairVariantInterfaceImpl(&f); + } +}; + +template<typename T, typename U> +struct QPairVariantInterfaceConvertFunctor<std::pair<T, U> > +{ + QPairVariantInterfaceImpl operator()(const std::pair<T, U>& f) const + { + return QPairVariantInterfaceImpl(&f); + } +}; + +} + +class QObject; +class QWidget; + + + + +template <class T> class QSharedPointer; template <class T> class QWeakPointer; template <class T> class QPointer; + +namespace QtPrivate +{ + template<typename T> + struct IsPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + + template<> + struct IsPointerToTypeDerivedFromQObject<void*> + { + enum { Value = false }; + }; + template<> + struct IsPointerToTypeDerivedFromQObject<const void*> + { + enum { Value = false }; + }; + template<> + struct IsPointerToTypeDerivedFromQObject<QObject*> + { + enum { Value = true }; + }; + + template<typename T> + struct IsPointerToTypeDerivedFromQObject<T*> + { + typedef qint8 yes_type; + typedef qint64 no_type; + + + static yes_type checkType(QObject* ); + + static no_type checkType(...); + static_assert(bool(sizeof(T)), "Type argument of Q_DECLARE_METATYPE(T*) must be fully defined"); + enum { Value = sizeof(checkType(static_cast<T*>(nullptr))) == sizeof(yes_type) }; + }; + + template<typename T, typename Enable = void> + struct IsGadgetHelper { enum { Value = false }; }; + + template<typename T> + struct IsGadgetHelper<T, typename T::QtGadgetHelper> + { + template <typename X> + static char checkType(void (X::*)()); + static void *checkType(void (T::*)()); + enum { Value = sizeof(checkType(&T::qt_check_for_QGADGET_macro)) == sizeof(void *) }; + }; + + + +# 1391 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +#pragma GCC diagnostic push +# 1391 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + + + + + template<typename T> char qt_getEnumMetaObject(const T&); + + template<typename T> + struct IsQEnumHelper { + static const T &declval(); + + + + + enum { Value = sizeof(qt_getEnumMetaObject(declval())) == sizeof(QMetaObject*) }; + }; + template<> struct IsQEnumHelper<void> { enum { Value = false }; }; + +# 1407 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +#pragma GCC diagnostic pop +# 1407 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + + + template<typename T, typename Enable = void> + struct MetaObjectForType + { + static inline const QMetaObject *value() { return nullptr; } + }; + template<> + struct MetaObjectForType<void> + { + static inline const QMetaObject *value() { return nullptr; } + }; + template<typename T> + struct MetaObjectForType<T*, typename QEnableIf<IsPointerToTypeDerivedFromQObject<T*>::Value>::Type> + { + static inline const QMetaObject *value() { return &T::staticMetaObject; } + }; + template<typename T> + struct MetaObjectForType<T, typename QEnableIf<IsGadgetHelper<T>::Value>::Type> + { + static inline const QMetaObject *value() { return &T::staticMetaObject; } + }; + template<typename T> + struct MetaObjectForType<T, typename QEnableIf<IsQEnumHelper<T>::Value>::Type > + { + static inline const QMetaObject *value() { return qt_getEnumMetaObject(T()); } + }; + + template<typename T> + struct IsSharedPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template<typename T> + struct IsSharedPointerToTypeDerivedFromQObject<QSharedPointer<T> > : IsPointerToTypeDerivedFromQObject<T*> + { + }; + + template<typename T> + struct IsWeakPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template<typename T> + struct IsWeakPointerToTypeDerivedFromQObject<QWeakPointer<T> > : IsPointerToTypeDerivedFromQObject<T*> + { + }; + + template<typename T> + struct IsTrackingPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template<typename T> + struct IsTrackingPointerToTypeDerivedFromQObject<QPointer<T> > + { + enum { Value = true }; + }; + + template<typename T> + struct IsSequentialContainer + { + enum { Value = false }; + }; + + template<typename T> + struct IsAssociativeContainer + { + enum { Value = false }; + }; + + template<typename T, bool = QtPrivate::IsSequentialContainer<T>::Value> + struct SequentialContainerConverterHelper + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T, bool = QMetaTypeId2<typename T::value_type>::Defined> + struct ValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T> + struct SequentialContainerConverterHelper<T, true> : ValueTypeIsMetaType<T> + { + }; + + template<typename T, bool = QtPrivate::IsAssociativeContainer<T>::Value> + struct AssociativeContainerConverterHelper + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T, bool = QMetaTypeId2<typename T::mapped_type>::Defined> + struct AssociativeValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T, bool = QMetaTypeId2<typename T::key_type>::Defined> + struct KeyAndValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T> + struct KeyAndValueTypeIsMetaType<T, true> : AssociativeValueTypeIsMetaType<T> + { + }; + + template<typename T> + struct AssociativeContainerConverterHelper<T, true> : KeyAndValueTypeIsMetaType<T> + { + }; + + template<typename T, bool = QMetaTypeId2<typename T::first_type>::Defined + && QMetaTypeId2<typename T::second_type>::Defined> + struct IsMetaTypePair + { + static bool registerConverter(int) + { + return false; + } + }; + + template<typename T> + struct IsMetaTypePair<T, true> + { + inline static bool registerConverter(int id); + }; + + template<typename T> + struct IsPair + { + static bool registerConverter(int) + { + return false; + } + }; + template<typename T, typename U> + struct IsPair<QPair<T, U> > : IsMetaTypePair<QPair<T, U> > {}; + template<typename T, typename U> + struct IsPair<std::pair<T, U> > : IsMetaTypePair<std::pair<T, U> > {}; + + template<typename T> + struct MetaTypePairHelper : IsPair<T> {}; + + template<typename T, typename = void> + struct MetaTypeSmartPointerHelper + { + static bool registerConverter(int) { return false; } + }; + + __attribute__((visibility("default"))) bool isBuiltinType(const QByteArray &type); +} + +template <typename T, int = + QtPrivate::IsPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::PointerToQObject : + QtPrivate::IsGadgetHelper<T>::Value ? QMetaType::IsGadget : + QtPrivate::IsQEnumHelper<T>::Value ? QMetaType::IsEnumeration : 0> +struct QMetaTypeIdQObject +{ + enum { + Defined = 0 + }; +}; + +template <typename T> +struct QMetaTypeId : public QMetaTypeIdQObject<T> +{ +}; + +template <typename T> +struct QMetaTypeId2 +{ + enum { Defined = QMetaTypeId<T>::Defined, IsBuiltIn=false }; + static inline constexpr int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); } +}; + +template <typename T> +struct QMetaTypeId2<const T&> : QMetaTypeId2<T> {}; + +template <typename T> +struct QMetaTypeId2<T&> { enum {Defined = false }; }; + +namespace QtPrivate { + template <typename T, bool Defined = QMetaTypeId2<T>::Defined> + struct QMetaTypeIdHelper { + static inline constexpr int qt_metatype_id() + { return QMetaTypeId2<T>::qt_metatype_id(); } + }; + template <typename T> struct QMetaTypeIdHelper<T, false> { + static inline constexpr int qt_metatype_id() + { return -1; } + }; +# 1629 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + template <typename Result, typename... Args> + struct IsPointerToTypeDerivedFromQObject<Result(*)(Args...)> { enum { Value = false }; }; + + + template<typename T> + struct QMetaTypeTypeFlags + { + enum { Flags = (QTypeInfoQuery<T>::isRelocatable ? QMetaType::MovableType : 0) + | (QTypeInfo<T>::isComplex ? QMetaType::NeedsConstruction : 0) + | (QTypeInfo<T>::isComplex ? QMetaType::NeedsDestruction : 0) + | (IsPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::PointerToQObject : 0) + | (IsSharedPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::SharedPointerToQObject : 0) + | (IsWeakPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::WeakPointerToQObject : 0) + | (IsTrackingPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::TrackingPointerToQObject : 0) + | (__is_enum(T) ? QMetaType::IsEnumeration : 0) + | (IsGadgetHelper<T>::Value ? QMetaType::IsGadget : 0) + }; + }; + + template<typename T, bool defined> + struct MetaTypeDefinedHelper + { + enum DefinedType { Defined = defined }; + }; + + template<typename SmartPointer> + struct QSmartPointerConvertFunctor + { + QObject* operator()(const SmartPointer &p) const + { + return p.operator->(); + } + }; + + template<typename T> + struct QSmartPointerConvertFunctor<QWeakPointer<T> > + { + QObject* operator()(const QWeakPointer<T> &p) const + { + return p.data(); + } + }; +} + +template <typename T> +int qRegisterNormalizedMetaType(const ::QByteArray &normalizedTypeName + + , T * dummy = 0 + , typename QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::Defined + +) +{ + + do { } while ((false) && (normalizedTypeName == QMetaObject::normalizedType(normalizedTypeName.constData()))); + + const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper<T>::qt_metatype_id(); + if (typedefOf != -1) + return QMetaType::registerNormalizedTypedef(normalizedTypeName, typedefOf); + + QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags<T>::Flags); + + if (defined) + flags |= QMetaType::WasDeclaredAsMetaType; + + const int id = QMetaType::registerNormalizedType(normalizedTypeName, + QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Construct, + int(sizeof(T)), + flags, + QtPrivate::MetaObjectForType<T>::value()); + + if (id > 0) { + QtPrivate::SequentialContainerConverterHelper<T>::registerConverter(id); + QtPrivate::AssociativeContainerConverterHelper<T>::registerConverter(id); + QtPrivate::MetaTypePairHelper<T>::registerConverter(id); + QtPrivate::MetaTypeSmartPointerHelper<T>::registerConverter(id); + } + + return id; +} + +template <typename T> +int qRegisterMetaType(const char *typeName + + , T * dummy = nullptr + , typename QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::Defined + +) +{ + + + + ::QByteArray normalizedTypeName = QMetaObject::normalizedType(typeName); + + return qRegisterNormalizedMetaType<T>(normalizedTypeName, dummy, defined); +} + + +template <typename T> +void qRegisterMetaTypeStreamOperators(const char *typeName + + , T * = nullptr + +) +{ + qRegisterMetaType<T>(typeName); + QMetaType::registerStreamOperators(typeName, QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Save, + QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Load); +} + + +template <typename T> +inline constexpr int qMetaTypeId() +{ + static_assert(bool(QMetaTypeId2<T>::Defined), "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system"); + return QMetaTypeId2<T>::qt_metatype_id(); +} + +template <typename T> +inline constexpr int qRegisterMetaType() +{ + return qMetaTypeId<T>(); +} + + + +template <typename T> +__attribute__ ((__deprecated__)) inline constexpr int qMetaTypeId(T *) +{ return qMetaTypeId<T>(); } + +template <typename T> +__attribute__ ((__deprecated__)) inline constexpr int qRegisterMetaType(T *) +{ return qRegisterMetaType<T>(); } + + + + +template <typename T> +struct QMetaTypeIdQObject<T*, QMetaType::PointerToQObject> +{ + enum { + Defined = 1 + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = { 0 }; + if (const int id = metatype_id.loadAcquire()) + return id; + const char * const cName = T::staticMetaObject.className(); + QByteArray typeName; + typeName.reserve(int(strlen(cName)) + 1); + typeName.append(cName).append('*'); + const int newId = qRegisterNormalizedMetaType<T*>( + typeName, + reinterpret_cast<T**>(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; + +template <typename T> +struct QMetaTypeIdQObject<T, QMetaType::IsGadget> +{ + enum { + Defined = QtPrivate::is_default_constructible<T>::value + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = { 0 }; + if (const int id = metatype_id.loadAcquire()) + return id; + const char * const cName = T::staticMetaObject.className(); + const int newId = qRegisterNormalizedMetaType<T>( + cName, + reinterpret_cast<T*>(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; + +template <typename T> +struct QMetaTypeIdQObject<T, QMetaType::IsEnumeration> +{ + enum { + Defined = 1 + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = { 0 }; + if (const int id = metatype_id.loadAcquire()) + return id; + const char *eName = qt_getEnumName(T()); + const char *cName = qt_getEnumMetaObject(T())->className(); + QByteArray typeName; + typeName.reserve(int(strlen(cName) + 2 + strlen(eName))); + typeName.append(cName).append("::").append(eName); + const int newId = qRegisterNormalizedMetaType<T>( + typeName, + reinterpret_cast<T*>(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; + + + +template <typename T> +inline int qRegisterMetaTypeStreamOperators() +{ + int id = qMetaTypeId<T>(); + QMetaType::registerStreamOperators(id, QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Save, + QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Load); + return id; +} +# 1891 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +class QChar; class QString; class QStringList; class QByteArray; class QBitArray; class QDate; class QTime; class QDateTime; class QUrl; class QLocale; class QRect; class QRectF; class QSize; class QSizeF; class QLine; class QLineF; class QPoint; class QPointF; class QRegExp; class QEasingCurve; class QUuid; class QVariant; class QModelIndex; class QRegularExpression; class QJsonValue; class QJsonObject; class QJsonArray; class QJsonDocument; class QPersistentModelIndex; +class QFont; class QPixmap; class QBrush; class QColor; class QPalette; class QIcon; class QImage; class QPolygon; class QRegion; class QBitmap; class QCursor; class QKeySequence; class QPen; class QTextLength; class QTextFormat; class QMatrix; class QTransform; class QMatrix4x4; class QVector2D; class QVector3D; class QVector4D; class QQuaternion; class QPolygonF; +class QSizePolicy; + + + +typedef QList<QVariant> QVariantList; +typedef QMap<QString, QVariant> QVariantMap; +typedef QHash<QString, QVariant> QVariantHash; +typedef QList<QByteArray> QByteArrayList; +# 1976 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" +namespace QtPrivate { + +template<typename T, bool = false> +struct SharedPointerMetaTypeIdHelper +{ + enum { + Defined = 0 + }; + static int qt_metatype_id() + { + return -1; + } +}; + +} +# 2050 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + + + template <class T> class QList; template <typename T> struct QMetaTypeId< QList<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QList")) + 1 + tNameLen + 1 + 1); typeName.append("QList", int(sizeof("QList")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QList<T> >( typeName, reinterpret_cast< QList<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QList<T> > { enum { Value = true }; }; } template <class T> class QVector; template <typename T> struct QMetaTypeId< QVector<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QVector")) + 1 + tNameLen + 1 + 1); typeName.append("QVector", int(sizeof("QVector")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QVector<T> >( typeName, reinterpret_cast< QVector<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QVector<T> > { enum { Value = true }; }; } template <class T> class QQueue; template <typename T> struct QMetaTypeId< QQueue<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QQueue")) + 1 + tNameLen + 1 + 1); typeName.append("QQueue", int(sizeof("QQueue")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QQueue<T> >( typeName, reinterpret_cast< QQueue<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QQueue<T> > { enum { Value = true }; }; } template <class T> class QStack; template <typename T> struct QMetaTypeId< QStack<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QStack")) + 1 + tNameLen + 1 + 1); typeName.append("QStack", int(sizeof("QStack")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QStack<T> >( typeName, reinterpret_cast< QStack<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QStack<T> > { enum { Value = true }; }; } template <class T> class QSet; template <typename T> struct QMetaTypeId< QSet<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QSet")) + 1 + tNameLen + 1 + 1); typeName.append("QSet", int(sizeof("QSet")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QSet<T> >( typeName, reinterpret_cast< QSet<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QSet<T> > { enum { Value = true }; }; } template <class T> class QLinkedList; template <typename T> struct QMetaTypeId< QLinkedList<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("QLinkedList")) + 1 + tNameLen + 1 + 1); typeName.append("QLinkedList", int(sizeof("QLinkedList")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QLinkedList<T> >( typeName, reinterpret_cast< QLinkedList<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<QLinkedList<T> > { enum { Value = true }; }; } + + + + + + template <typename T> struct QMetaTypeId< std::vector<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("std::vector")) + 1 + tNameLen + 1 + 1); typeName.append("std::vector", int(sizeof("std::vector")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< std::vector<T> >( typeName, reinterpret_cast< std::vector<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<std::vector<T> > { enum { Value = true }; }; } + template <typename T> struct QMetaTypeId< std::list<T> > { enum { Defined = QMetaTypeId2<T>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.load()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); do { } while ((false) && (tName)); const int tNameLen = int(qstrlen(tName)); QByteArray typeName; typeName.reserve(int(sizeof("std::list")) + 1 + tNameLen + 1 + 1); typeName.append("std::list", int(sizeof("std::list")) - 1) .append('<').append(tName, tNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< std::list<T> >( typeName, reinterpret_cast< std::list<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; namespace QtPrivate { template<typename T> struct IsSequentialContainer<std::list<T> > { enum { Value = true }; }; } + + + + + + + template <class T1, class T2> class QHash; template <class T1, class T2> class QMap; template <class T1, class T2> struct QPair; +# 2082 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qmetatype.h" + namespace QtPrivate { template<typename T, typename U> struct IsAssociativeContainer<QHash<T, U> > { enum { Value = true }; }; } template<typename T, typename U> struct QMetaTypeId< QHash<T, U> > { enum { Defined = QMetaTypeId2<T>::Defined && QMetaTypeId2<U>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); const char *uName = QMetaType::typeName(qMetaTypeId<U>()); do { } while ((false) && (tName)); do { } while ((false) && (uName)); const int tNameLen = int(qstrlen(tName)); const int uNameLen = int(qstrlen(uName)); QByteArray typeName; typeName.reserve(int(sizeof("QHash")) + 1 + tNameLen + 1 + uNameLen + 1 + 1); typeName.append("QHash", int(sizeof("QHash")) - 1) .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QHash<T, U> >( typeName, reinterpret_cast< QHash<T, U> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + namespace QtPrivate { template<typename T, typename U> struct IsAssociativeContainer<QMap<T, U> > { enum { Value = true }; }; } template<typename T, typename U> struct QMetaTypeId< QMap<T, U> > { enum { Defined = QMetaTypeId2<T>::Defined && QMetaTypeId2<U>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); const char *uName = QMetaType::typeName(qMetaTypeId<U>()); do { } while ((false) && (tName)); do { } while ((false) && (uName)); const int tNameLen = int(qstrlen(tName)); const int uNameLen = int(qstrlen(uName)); QByteArray typeName; typeName.reserve(int(sizeof("QMap")) + 1 + tNameLen + 1 + uNameLen + 1 + 1); typeName.append("QMap", int(sizeof("QMap")) - 1) .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QMap<T, U> >( typeName, reinterpret_cast< QMap<T, U> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + namespace QtPrivate { template<typename T, typename U> struct IsAssociativeContainer<std::map<T, U> > { enum { Value = true }; }; } template<typename T, typename U> struct QMetaTypeId< std::map<T, U> > { enum { Defined = QMetaTypeId2<T>::Defined && QMetaTypeId2<U>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); const char *uName = QMetaType::typeName(qMetaTypeId<U>()); do { } while ((false) && (tName)); do { } while ((false) && (uName)); const int tNameLen = int(qstrlen(tName)); const int uNameLen = int(qstrlen(uName)); QByteArray typeName; typeName.reserve(int(sizeof("std::map")) + 1 + tNameLen + 1 + uNameLen + 1 + 1); typeName.append("std::map", int(sizeof("std::map")) - 1) .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< std::map<T, U> >( typeName, reinterpret_cast< std::map<T, U> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + + template<typename T, typename U> struct QMetaTypeId< QPair<T, U> > { enum { Defined = QMetaTypeId2<T>::Defined && QMetaTypeId2<U>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); const char *uName = QMetaType::typeName(qMetaTypeId<U>()); do { } while ((false) && (tName)); do { } while ((false) && (uName)); const int tNameLen = int(qstrlen(tName)); const int uNameLen = int(qstrlen(uName)); QByteArray typeName; typeName.reserve(int(sizeof("QPair")) + 1 + tNameLen + 1 + uNameLen + 1 + 1); typeName.append("QPair", int(sizeof("QPair")) - 1) .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< QPair<T, U> >( typeName, reinterpret_cast< QPair<T, U> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + template<typename T, typename U> struct QMetaTypeId< std::pair<T, U> > { enum { Defined = QMetaTypeId2<T>::Defined && QMetaTypeId2<U>::Defined }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char *tName = QMetaType::typeName(qMetaTypeId<T>()); const char *uName = QMetaType::typeName(qMetaTypeId<U>()); do { } while ((false) && (tName)); do { } while ((false) && (uName)); const int tNameLen = int(qstrlen(tName)); const int uNameLen = int(qstrlen(uName)); QByteArray typeName; typeName.reserve(int(sizeof("std::pair")) + 1 + tNameLen + 1 + uNameLen + 1 + 1); typeName.append("std::pair", int(sizeof("std::pair")) - 1) .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); if (typeName.endsWith('>')) typeName.append(' '); typeName.append('>'); const int newId = qRegisterNormalizedMetaType< std::pair<T, U> >( typeName, reinterpret_cast< std::pair<T, U> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + + + + + + namespace QtPrivate { template<typename T> struct SharedPointerMetaTypeIdHelper<QSharedPointer<T>, true> { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char * const cName = T::staticMetaObject.className(); QByteArray typeName; typeName.reserve(int(sizeof("QSharedPointer") + 1 + strlen(cName) + 1)); typeName.append("QSharedPointer", int(sizeof("QSharedPointer")) - 1) .append('<').append(cName).append('>'); const int newId = qRegisterNormalizedMetaType< QSharedPointer<T> >( typeName, reinterpret_cast< QSharedPointer<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; template<typename T> struct MetaTypeSmartPointerHelper<QSharedPointer<T> , typename QEnableIf<IsPointerToTypeDerivedFromQObject<T*>::Value >::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor<QSharedPointer<T> > o; static const QtPrivate::ConverterFunctor<QSharedPointer<T>, QObject*, QSmartPointerConvertFunctor<QSharedPointer<T> > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template <typename T> struct QMetaTypeId< QSharedPointer<T> > : QtPrivate::SharedPointerMetaTypeIdHelper< QSharedPointer<T>, QtPrivate::IsPointerToTypeDerivedFromQObject<T*>::Value> { }; namespace QtPrivate { template<typename T> struct SharedPointerMetaTypeIdHelper<QWeakPointer<T>, true> { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char * const cName = T::staticMetaObject.className(); QByteArray typeName; typeName.reserve(int(sizeof("QWeakPointer") + 1 + strlen(cName) + 1)); typeName.append("QWeakPointer", int(sizeof("QWeakPointer")) - 1) .append('<').append(cName).append('>'); const int newId = qRegisterNormalizedMetaType< QWeakPointer<T> >( typeName, reinterpret_cast< QWeakPointer<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; template<typename T> struct MetaTypeSmartPointerHelper<QWeakPointer<T> , typename QEnableIf<IsPointerToTypeDerivedFromQObject<T*>::Value >::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor<QWeakPointer<T> > o; static const QtPrivate::ConverterFunctor<QWeakPointer<T>, QObject*, QSmartPointerConvertFunctor<QWeakPointer<T> > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template <typename T> struct QMetaTypeId< QWeakPointer<T> > : QtPrivate::SharedPointerMetaTypeIdHelper< QWeakPointer<T>, QtPrivate::IsPointerToTypeDerivedFromQObject<T*>::Value> { }; namespace QtPrivate { template<typename T> struct SharedPointerMetaTypeIdHelper<QPointer<T>, true> { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const char * const cName = T::staticMetaObject.className(); QByteArray typeName; typeName.reserve(int(sizeof("QPointer") + 1 + strlen(cName) + 1)); typeName.append("QPointer", int(sizeof("QPointer")) - 1) .append('<').append(cName).append('>'); const int newId = qRegisterNormalizedMetaType< QPointer<T> >( typeName, reinterpret_cast< QPointer<T> *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; template<typename T> struct MetaTypeSmartPointerHelper<QPointer<T> , typename QEnableIf<IsPointerToTypeDerivedFromQObject<T*>::Value >::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor<QPointer<T> > o; static const QtPrivate::ConverterFunctor<QPointer<T>, QObject*, QSmartPointerConvertFunctor<QPointer<T> > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template <typename T> struct QMetaTypeId< QPointer<T> > : QtPrivate::SharedPointerMetaTypeIdHelper< QPointer<T>, QtPrivate::IsPointerToTypeDerivedFromQObject<T*>::Value> { }; + + + + + +inline QMetaType::QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeInterface *info, + Creator creator, + Deleter deleter, + SaveOperator saveOp, + LoadOperator loadOp, + Constructor constructor, + Destructor destructor, + uint size, + uint theTypeFlags, + int typeId, + const QMetaObject *_metaObject) + : m_creator_unused(creator) + , m_deleter_unused(deleter) + , m_saveOp(saveOp) + , m_loadOp(loadOp) + , m_constructor(constructor) + , m_destructor(destructor) + , m_extension(nullptr) + , m_size(size) + , m_typeFlags(theTypeFlags) + , m_extensionFlags(extensionFlags) + , m_typeId(typeId) + , m_metaObject(_metaObject) +{ + if (__builtin_expect(!!(isExtended(CtorEx) || typeId == QMetaType::Void), false)) + ctor(info); +} + +inline QMetaType::~QMetaType() +{ + if (__builtin_expect(!!(isExtended(DtorEx)), false)) + dtor(); +} + +inline bool QMetaType::isValid() const +{ + return m_typeId != UnknownType; +} + +inline bool QMetaType::isRegistered() const +{ + return isValid(); +} + +inline void *QMetaType::create(const void *copy) const +{ + + return createExtended(copy); +} + +inline void QMetaType::destroy(void *data) const +{ + + destroyExtended(data); +} + +inline void *QMetaType::construct(void *where, const void *copy) const +{ + if (__builtin_expect(!!(isExtended(ConstructEx)), false)) + return constructExtended(where, copy); + return m_constructor(where, copy); +} + +inline void QMetaType::destruct(void *data) const +{ + if (__builtin_expect(!!(isExtended(DestructEx)), false)) + return destructExtended(data); + if (__builtin_expect(!!(!data), false)) + return; + m_destructor(data); +} + +inline int QMetaType::sizeOf() const +{ + if (__builtin_expect(!!(isExtended(SizeEx)), false)) + return sizeExtended(); + return m_size; +} + +inline QMetaType::TypeFlags QMetaType::flags() const +{ + if (__builtin_expect(!!(isExtended(FlagsEx)), false)) + return flagsExtended(); + return QMetaType::TypeFlags(m_typeFlags); +} + +inline const QMetaObject *QMetaType::metaObject() const +{ + if (__builtin_expect(!!(isExtended(MetaObjectEx)), false)) + return metaObjectExtended(); + return m_metaObject; +} + + + + + template<> struct QMetaTypeId2<void> { enum { Defined = 1, IsBuiltIn = true, MetaType = 43 }; static inline constexpr int qt_metatype_id() { return 43; } }; template<> struct QMetaTypeId2<bool> { enum { Defined = 1, IsBuiltIn = true, MetaType = 1 }; static inline constexpr int qt_metatype_id() { return 1; } }; template<> struct QMetaTypeId2<int> { enum { Defined = 1, IsBuiltIn = true, MetaType = 2 }; static inline constexpr int qt_metatype_id() { return 2; } }; template<> struct QMetaTypeId2<uint> { enum { Defined = 1, IsBuiltIn = true, MetaType = 3 }; static inline constexpr int qt_metatype_id() { return 3; } }; template<> struct QMetaTypeId2<qlonglong> { enum { Defined = 1, IsBuiltIn = true, MetaType = 4 }; static inline constexpr int qt_metatype_id() { return 4; } }; template<> struct QMetaTypeId2<qulonglong> { enum { Defined = 1, IsBuiltIn = true, MetaType = 5 }; static inline constexpr int qt_metatype_id() { return 5; } }; template<> struct QMetaTypeId2<double> { enum { Defined = 1, IsBuiltIn = true, MetaType = 6 }; static inline constexpr int qt_metatype_id() { return 6; } }; template<> struct QMetaTypeId2<long> { enum { Defined = 1, IsBuiltIn = true, MetaType = 32 }; static inline constexpr int qt_metatype_id() { return 32; } }; template<> struct QMetaTypeId2<short> { enum { Defined = 1, IsBuiltIn = true, MetaType = 33 }; static inline constexpr int qt_metatype_id() { return 33; } }; template<> struct QMetaTypeId2<char> { enum { Defined = 1, IsBuiltIn = true, MetaType = 34 }; static inline constexpr int qt_metatype_id() { return 34; } }; template<> struct QMetaTypeId2<ulong> { enum { Defined = 1, IsBuiltIn = true, MetaType = 35 }; static inline constexpr int qt_metatype_id() { return 35; } }; template<> struct QMetaTypeId2<ushort> { enum { Defined = 1, IsBuiltIn = true, MetaType = 36 }; static inline constexpr int qt_metatype_id() { return 36; } }; template<> struct QMetaTypeId2<uchar> { enum { Defined = 1, IsBuiltIn = true, MetaType = 37 }; static inline constexpr int qt_metatype_id() { return 37; } }; template<> struct QMetaTypeId2<float> { enum { Defined = 1, IsBuiltIn = true, MetaType = 38 }; static inline constexpr int qt_metatype_id() { return 38; } }; template<> struct QMetaTypeId2<signed char> { enum { Defined = 1, IsBuiltIn = true, MetaType = 40 }; static inline constexpr int qt_metatype_id() { return 40; } }; template<> struct QMetaTypeId2<void*> { enum { Defined = 1, IsBuiltIn = true, MetaType = 31 }; static inline constexpr int qt_metatype_id() { return 31; } }; template<> struct QMetaTypeId2<QChar> { enum { Defined = 1, IsBuiltIn = true, MetaType = 7 }; static inline constexpr int qt_metatype_id() { return 7; } }; template<> struct QMetaTypeId2<QString> { enum { Defined = 1, IsBuiltIn = true, MetaType = 10 }; static inline constexpr int qt_metatype_id() { return 10; } }; template<> struct QMetaTypeId2<QStringList> { enum { Defined = 1, IsBuiltIn = true, MetaType = 11 }; static inline constexpr int qt_metatype_id() { return 11; } }; template<> struct QMetaTypeId2<QByteArray> { enum { Defined = 1, IsBuiltIn = true, MetaType = 12 }; static inline constexpr int qt_metatype_id() { return 12; } }; template<> struct QMetaTypeId2<QBitArray> { enum { Defined = 1, IsBuiltIn = true, MetaType = 13 }; static inline constexpr int qt_metatype_id() { return 13; } }; template<> struct QMetaTypeId2<QDate> { enum { Defined = 1, IsBuiltIn = true, MetaType = 14 }; static inline constexpr int qt_metatype_id() { return 14; } }; template<> struct QMetaTypeId2<QTime> { enum { Defined = 1, IsBuiltIn = true, MetaType = 15 }; static inline constexpr int qt_metatype_id() { return 15; } }; template<> struct QMetaTypeId2<QDateTime> { enum { Defined = 1, IsBuiltIn = true, MetaType = 16 }; static inline constexpr int qt_metatype_id() { return 16; } }; template<> struct QMetaTypeId2<QUrl> { enum { Defined = 1, IsBuiltIn = true, MetaType = 17 }; static inline constexpr int qt_metatype_id() { return 17; } }; template<> struct QMetaTypeId2<QLocale> { enum { Defined = 1, IsBuiltIn = true, MetaType = 18 }; static inline constexpr int qt_metatype_id() { return 18; } }; template<> struct QMetaTypeId2<QRect> { enum { Defined = 1, IsBuiltIn = true, MetaType = 19 }; static inline constexpr int qt_metatype_id() { return 19; } }; template<> struct QMetaTypeId2<QRectF> { enum { Defined = 1, IsBuiltIn = true, MetaType = 20 }; static inline constexpr int qt_metatype_id() { return 20; } }; template<> struct QMetaTypeId2<QSize> { enum { Defined = 1, IsBuiltIn = true, MetaType = 21 }; static inline constexpr int qt_metatype_id() { return 21; } }; template<> struct QMetaTypeId2<QSizeF> { enum { Defined = 1, IsBuiltIn = true, MetaType = 22 }; static inline constexpr int qt_metatype_id() { return 22; } }; template<> struct QMetaTypeId2<QLine> { enum { Defined = 1, IsBuiltIn = true, MetaType = 23 }; static inline constexpr int qt_metatype_id() { return 23; } }; template<> struct QMetaTypeId2<QLineF> { enum { Defined = 1, IsBuiltIn = true, MetaType = 24 }; static inline constexpr int qt_metatype_id() { return 24; } }; template<> struct QMetaTypeId2<QPoint> { enum { Defined = 1, IsBuiltIn = true, MetaType = 25 }; static inline constexpr int qt_metatype_id() { return 25; } }; template<> struct QMetaTypeId2<QPointF> { enum { Defined = 1, IsBuiltIn = true, MetaType = 26 }; static inline constexpr int qt_metatype_id() { return 26; } }; template<> struct QMetaTypeId2<QRegExp> { enum { Defined = 1, IsBuiltIn = true, MetaType = 27 }; static inline constexpr int qt_metatype_id() { return 27; } }; template<> struct QMetaTypeId2<QEasingCurve> { enum { Defined = 1, IsBuiltIn = true, MetaType = 29 }; static inline constexpr int qt_metatype_id() { return 29; } }; template<> struct QMetaTypeId2<QUuid> { enum { Defined = 1, IsBuiltIn = true, MetaType = 30 }; static inline constexpr int qt_metatype_id() { return 30; } }; template<> struct QMetaTypeId2<QVariant> { enum { Defined = 1, IsBuiltIn = true, MetaType = 41 }; static inline constexpr int qt_metatype_id() { return 41; } }; template<> struct QMetaTypeId2<QModelIndex> { enum { Defined = 1, IsBuiltIn = true, MetaType = 42 }; static inline constexpr int qt_metatype_id() { return 42; } }; template<> struct QMetaTypeId2<QRegularExpression> { enum { Defined = 1, IsBuiltIn = true, MetaType = 44 }; static inline constexpr int qt_metatype_id() { return 44; } }; template<> struct QMetaTypeId2<QJsonValue> { enum { Defined = 1, IsBuiltIn = true, MetaType = 45 }; static inline constexpr int qt_metatype_id() { return 45; } }; template<> struct QMetaTypeId2<QJsonObject> { enum { Defined = 1, IsBuiltIn = true, MetaType = 46 }; static inline constexpr int qt_metatype_id() { return 46; } }; template<> struct QMetaTypeId2<QJsonArray> { enum { Defined = 1, IsBuiltIn = true, MetaType = 47 }; static inline constexpr int qt_metatype_id() { return 47; } }; template<> struct QMetaTypeId2<QJsonDocument> { enum { Defined = 1, IsBuiltIn = true, MetaType = 48 }; static inline constexpr int qt_metatype_id() { return 48; } }; template<> struct QMetaTypeId2<QPersistentModelIndex> { enum { Defined = 1, IsBuiltIn = true, MetaType = 50 }; static inline constexpr int qt_metatype_id() { return 50; } }; template<> struct QMetaTypeId2<QObject*> { enum { Defined = 1, IsBuiltIn = true, MetaType = 39 }; static inline constexpr int qt_metatype_id() { return 39; } }; template<> struct QMetaTypeId2<QVariantMap> { enum { Defined = 1, IsBuiltIn = true, MetaType = 8 }; static inline constexpr int qt_metatype_id() { return 8; } }; template<> struct QMetaTypeId2<QVariantList> { enum { Defined = 1, IsBuiltIn = true, MetaType = 9 }; static inline constexpr int qt_metatype_id() { return 9; } }; template<> struct QMetaTypeId2<QVariantHash> { enum { Defined = 1, IsBuiltIn = true, MetaType = 28 }; static inline constexpr int qt_metatype_id() { return 28; } }; template<> struct QMetaTypeId2<QByteArrayList> { enum { Defined = 1, IsBuiltIn = true, MetaType = 49 }; static inline constexpr int qt_metatype_id() { return 49; } }; template<> struct QMetaTypeId2<QFont> { enum { Defined = 1, IsBuiltIn = true, MetaType = 64 }; static inline constexpr int qt_metatype_id() { return 64; } }; template<> struct QMetaTypeId2<QPixmap> { enum { Defined = 1, IsBuiltIn = true, MetaType = 65 }; static inline constexpr int qt_metatype_id() { return 65; } }; template<> struct QMetaTypeId2<QBrush> { enum { Defined = 1, IsBuiltIn = true, MetaType = 66 }; static inline constexpr int qt_metatype_id() { return 66; } }; template<> struct QMetaTypeId2<QColor> { enum { Defined = 1, IsBuiltIn = true, MetaType = 67 }; static inline constexpr int qt_metatype_id() { return 67; } }; template<> struct QMetaTypeId2<QPalette> { enum { Defined = 1, IsBuiltIn = true, MetaType = 68 }; static inline constexpr int qt_metatype_id() { return 68; } }; template<> struct QMetaTypeId2<QIcon> { enum { Defined = 1, IsBuiltIn = true, MetaType = 69 }; static inline constexpr int qt_metatype_id() { return 69; } }; template<> struct QMetaTypeId2<QImage> { enum { Defined = 1, IsBuiltIn = true, MetaType = 70 }; static inline constexpr int qt_metatype_id() { return 70; } }; template<> struct QMetaTypeId2<QPolygon> { enum { Defined = 1, IsBuiltIn = true, MetaType = 71 }; static inline constexpr int qt_metatype_id() { return 71; } }; template<> struct QMetaTypeId2<QRegion> { enum { Defined = 1, IsBuiltIn = true, MetaType = 72 }; static inline constexpr int qt_metatype_id() { return 72; } }; template<> struct QMetaTypeId2<QBitmap> { enum { Defined = 1, IsBuiltIn = true, MetaType = 73 }; static inline constexpr int qt_metatype_id() { return 73; } }; template<> struct QMetaTypeId2<QCursor> { enum { Defined = 1, IsBuiltIn = true, MetaType = 74 }; static inline constexpr int qt_metatype_id() { return 74; } }; template<> struct QMetaTypeId2<QKeySequence> { enum { Defined = 1, IsBuiltIn = true, MetaType = 75 }; static inline constexpr int qt_metatype_id() { return 75; } }; template<> struct QMetaTypeId2<QPen> { enum { Defined = 1, IsBuiltIn = true, MetaType = 76 }; static inline constexpr int qt_metatype_id() { return 76; } }; template<> struct QMetaTypeId2<QTextLength> { enum { Defined = 1, IsBuiltIn = true, MetaType = 77 }; static inline constexpr int qt_metatype_id() { return 77; } }; template<> struct QMetaTypeId2<QTextFormat> { enum { Defined = 1, IsBuiltIn = true, MetaType = 78 }; static inline constexpr int qt_metatype_id() { return 78; } }; template<> struct QMetaTypeId2<QMatrix> { enum { Defined = 1, IsBuiltIn = true, MetaType = 79 }; static inline constexpr int qt_metatype_id() { return 79; } }; template<> struct QMetaTypeId2<QTransform> { enum { Defined = 1, IsBuiltIn = true, MetaType = 80 }; static inline constexpr int qt_metatype_id() { return 80; } }; template<> struct QMetaTypeId2<QMatrix4x4> { enum { Defined = 1, IsBuiltIn = true, MetaType = 81 }; static inline constexpr int qt_metatype_id() { return 81; } }; template<> struct QMetaTypeId2<QVector2D> { enum { Defined = 1, IsBuiltIn = true, MetaType = 82 }; static inline constexpr int qt_metatype_id() { return 82; } }; template<> struct QMetaTypeId2<QVector3D> { enum { Defined = 1, IsBuiltIn = true, MetaType = 83 }; static inline constexpr int qt_metatype_id() { return 83; } }; template<> struct QMetaTypeId2<QVector4D> { enum { Defined = 1, IsBuiltIn = true, MetaType = 84 }; static inline constexpr int qt_metatype_id() { return 84; } }; template<> struct QMetaTypeId2<QQuaternion> { enum { Defined = 1, IsBuiltIn = true, MetaType = 85 }; static inline constexpr int qt_metatype_id() { return 85; } }; template<> struct QMetaTypeId2<QPolygonF> { enum { Defined = 1, IsBuiltIn = true, MetaType = 86 }; static inline constexpr int qt_metatype_id() { return 86; } }; template<> struct QMetaTypeId2<QSizePolicy> { enum { Defined = 1, IsBuiltIn = true, MetaType = 121 }; static inline constexpr int qt_metatype_id() { return 121; } }; + + template <> struct QMetaTypeId< QtMetaTypePrivate::QSequentialIterableImpl > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const int newId = qRegisterMetaType< QtMetaTypePrivate::QSequentialIterableImpl >("QtMetaTypePrivate::QSequentialIterableImpl", reinterpret_cast< QtMetaTypePrivate::QSequentialIterableImpl *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + template <> struct QMetaTypeId< QtMetaTypePrivate::QAssociativeIterableImpl > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const int newId = qRegisterMetaType< QtMetaTypePrivate::QAssociativeIterableImpl >("QtMetaTypePrivate::QAssociativeIterableImpl", reinterpret_cast< QtMetaTypePrivate::QAssociativeIterableImpl *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + template <> struct QMetaTypeId< QtMetaTypePrivate::QPairVariantInterfaceImpl > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { 0 }; if (const int id = metatype_id.loadAcquire()) return id; const int newId = qRegisterMetaType< QtMetaTypePrivate::QPairVariantInterfaceImpl >("QtMetaTypePrivate::QPairVariantInterfaceImpl", reinterpret_cast< QtMetaTypePrivate::QPairVariantInterfaceImpl *>(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; + + + +template <typename T> +inline bool QtPrivate::IsMetaTypePair<T, true>::registerConverter(int id) +{ + const int toId = qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QPairVariantInterfaceConvertFunctor<T> o; + static const QtPrivate::ConverterFunctor<T, + QtMetaTypePrivate::QPairVariantInterfaceImpl, + QtMetaTypePrivate::QPairVariantInterfaceConvertFunctor<T> > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; +} + +namespace QtPrivate { + template<typename T> + struct ValueTypeIsMetaType<T, true> + { + static bool registerConverter(int id) + { + const int toId = qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QSequentialIterableConvertFunctor<T> o; + static const QtPrivate::ConverterFunctor<T, + QtMetaTypePrivate::QSequentialIterableImpl, + QtMetaTypePrivate::QSequentialIterableConvertFunctor<T> > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; + } + }; + + template<typename T> + struct AssociativeValueTypeIsMetaType<T, true> + { + static bool registerConverter(int id) + { + const int toId = qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QAssociativeIterableConvertFunctor<T> o; + static const QtPrivate::ConverterFunctor<T, + QtMetaTypePrivate::QAssociativeIterableImpl, + QtMetaTypePrivate::QAssociativeIterableConvertFunctor<T> > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; + } + }; +} + + +# 1 "../../include/QtCore/qmetatype.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qmap.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" +# 1 "../../include/QtCore/qiterator.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 2 +# 1 "../../include/QtCore/qrefcount.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 2 +# 1 "../../include/QtCore/qpair.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 1 +# 107 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 108 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qtypetraits.h" 2 +# 1 "../../include/QtCore/qtypetraits.h" 2 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" 2 +# 60 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" + +# 72 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" +template <class Key> inline bool qMapLessThanKey(const Key &key1, const Key &key2) +{ + return key1 < key2; +} + +template <class Ptr> inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2) +{ + static_assert(bool(sizeof(quintptr) == sizeof(const Ptr *)), "sizeof(quintptr) == sizeof(const Ptr *)"); + return quintptr(key1) < quintptr(key2); +} + +struct QMapDataBase; +template <class Key, class T> struct QMapData; + +struct __attribute__((visibility("default"))) QMapNodeBase +{ + quintptr p; + QMapNodeBase *left; + QMapNodeBase *right; + + enum Color { Red = 0, Black = 1 }; + enum { Mask = 3 }; + + const QMapNodeBase *nextNode() const; + QMapNodeBase *nextNode() { return const_cast<QMapNodeBase *>(const_cast<const QMapNodeBase *>(this)->nextNode()); } + const QMapNodeBase *previousNode() const; + QMapNodeBase *previousNode() { return const_cast<QMapNodeBase *>(const_cast<const QMapNodeBase *>(this)->previousNode()); } + + Color color() const { return Color(p & 1); } + void setColor(Color c) { if (c == Black) p |= Black; else p &= ~Black; } + QMapNodeBase *parent() const { return reinterpret_cast<QMapNodeBase *>(p & ~Mask); } + void setParent(QMapNodeBase *pp) { p = (p & Mask) | quintptr(pp); } + + template <typename T> + static typename QtPrivate::QEnableIf<QTypeInfo<T>::isComplex>::Type + callDestructorIfNecessary(T &t) noexcept { (void)t;; t.~T(); } + template <typename T> + static typename QtPrivate::QEnableIf<!QTypeInfo<T>::isComplex>::Type + callDestructorIfNecessary(T &) noexcept {} +}; + +template <class Key, class T> +struct QMapNode : public QMapNodeBase +{ + Key key; + T value; + + inline QMapNode *leftNode() const { return static_cast<QMapNode *>(left); } + inline QMapNode *rightNode() const { return static_cast<QMapNode *>(right); } + + inline const QMapNode *nextNode() const { return static_cast<const QMapNode *>(QMapNodeBase::nextNode()); } + inline const QMapNode *previousNode() const { return static_cast<const QMapNode *>(QMapNodeBase::previousNode()); } + inline QMapNode *nextNode() { return static_cast<QMapNode *>(QMapNodeBase::nextNode()); } + inline QMapNode *previousNode() { return static_cast<QMapNode *>(QMapNodeBase::previousNode()); } + + QMapNode<Key, T> *copy(QMapData<Key, T> *d) const; + + void destroySubTree() + { + callDestructorIfNecessary(key); + callDestructorIfNecessary(value); + doDestroySubTree(QtPrivate::integral_constant<bool, QTypeInfo<T>::isComplex || QTypeInfo<Key>::isComplex>()); + } + + QMapNode<Key, T> *lowerBound(const Key &key); + QMapNode<Key, T> *upperBound(const Key &key); + +private: + void doDestroySubTree(QtPrivate::false_type) {} + void doDestroySubTree(QtPrivate::true_type) + { + if (left) + leftNode()->destroySubTree(); + if (right) + rightNode()->destroySubTree(); + } + + QMapNode() = delete; + QMapNode(const QMapNode &) = delete; QMapNode &operator=(const QMapNode &) = delete; +}; + +template <class Key, class T> +inline QMapNode<Key, T> *QMapNode<Key, T>::lowerBound(const Key &akey) +{ + QMapNode<Key, T> *n = this; + QMapNode<Key, T> *lastNode = nullptr; + while (n) { + if (!qMapLessThanKey(n->key, akey)) { + lastNode = n; + n = n->leftNode(); + } else { + n = n->rightNode(); + } + } + return lastNode; +} + +template <class Key, class T> +inline QMapNode<Key, T> *QMapNode<Key, T>::upperBound(const Key &akey) +{ + QMapNode<Key, T> *n = this; + QMapNode<Key, T> *lastNode = nullptr; + while (n) { + if (qMapLessThanKey(akey, n->key)) { + lastNode = n; + n = n->leftNode(); + } else { + n = n->rightNode(); + } + } + return lastNode; +} + + + +struct __attribute__((visibility("default"))) QMapDataBase +{ + QtPrivate::RefCount ref; + int size; + QMapNodeBase header; + QMapNodeBase *mostLeftNode; + + void rotateLeft(QMapNodeBase *x); + void rotateRight(QMapNodeBase *x); + void rebalance(QMapNodeBase *x); + void freeNodeAndRebalance(QMapNodeBase *z); + void recalcMostLeftNode(); + + QMapNodeBase *createNode(int size, int alignment, QMapNodeBase *parent, bool left); + void freeTree(QMapNodeBase *root, int alignment); + + static const QMapDataBase shared_null; + + static QMapDataBase *createData(); + static void freeData(QMapDataBase *d); +}; + +template <class Key, class T> +struct QMapData : public QMapDataBase +{ + typedef QMapNode<Key, T> Node; + + Node *root() const { return static_cast<Node *>(header.left); } + + const Node *end() const { return static_cast<const Node *>(&header); } + Node *end() { return static_cast<Node *>(&header); } + const Node *begin() const { if (root()) return static_cast<const Node*>(mostLeftNode); return end(); } + Node *begin() { if (root()) return static_cast<Node*>(mostLeftNode); return end(); } + + void deleteNode(Node *z); + Node *findNode(const Key &akey) const; + void nodeRange(const Key &akey, Node **firstNode, Node **lastNode); + + Node *createNode(const Key &k, const T &v, Node *parent = nullptr, bool left = false) + { + Node *n = static_cast<Node *>(QMapDataBase::createNode(sizeof(Node), __alignof__(Node), + parent, left)); + try { + new (&n->key) Key(k); + try { + new (&n->value) T(v); + } catch (...) { + n->key.~Key(); + throw; + } + } catch (...) { + QMapDataBase::freeNodeAndRebalance(n); + throw; + } + return n; + } + + static QMapData *create() { + return static_cast<QMapData *>(createData()); + } + + void destroy() { + if (root()) { + root()->destroySubTree(); + freeTree(header.left, __alignof__(Node)); + } + freeData(this); + } +}; + +template <class Key, class T> +QMapNode<Key, T> *QMapNode<Key, T>::copy(QMapData<Key, T> *d) const +{ + QMapNode<Key, T> *n = d->createNode(key, value); + n->setColor(color()); + if (left) { + n->left = leftNode()->copy(d); + n->left->setParent(n); + } else { + n->left = nullptr; + } + if (right) { + n->right = rightNode()->copy(d); + n->right->setParent(n); + } else { + n->right = nullptr; + } + return n; +} + +template <class Key, class T> +void QMapData<Key, T>::deleteNode(QMapNode<Key, T> *z) +{ + QMapNodeBase::callDestructorIfNecessary(z->key); + QMapNodeBase::callDestructorIfNecessary(z->value); + freeNodeAndRebalance(z); +} + +template <class Key, class T> +QMapNode<Key, T> *QMapData<Key, T>::findNode(const Key &akey) const +{ + if (Node *r = root()) { + Node *lb = r->lowerBound(akey); + if (lb && !qMapLessThanKey(akey, lb->key)) + return lb; + } + return nullptr; +} + + +template <class Key, class T> +void QMapData<Key, T>::nodeRange(const Key &akey, QMapNode<Key, T> **firstNode, QMapNode<Key, T> **lastNode) +{ + Node *n = root(); + Node *l = end(); + while (n) { + if (qMapLessThanKey(akey, n->key)) { + l = n; + n = n->leftNode(); + } else if (qMapLessThanKey(n->key, akey)) { + n = n->rightNode(); + } else { + *firstNode = n->leftNode() ? n->leftNode()->lowerBound(akey) : nullptr; + if (!*firstNode) + *firstNode = n; + *lastNode = n->rightNode() ? n->rightNode()->upperBound(akey) : nullptr; + if (!*lastNode) + *lastNode = l; + return; + } + } + *firstNode = *lastNode = l; +} + + +template <class Key, class T> +class QMap +{ + typedef QMapNode<Key, T> Node; + + QMapData<Key, T> *d; + +public: + inline QMap() noexcept : d(static_cast<QMapData<Key, T> *>(const_cast<QMapDataBase *>(&QMapDataBase::shared_null))) { } + + inline QMap(std::initializer_list<std::pair<Key,T> > list) + : d(static_cast<QMapData<Key, T> *>(const_cast<QMapDataBase *>(&QMapDataBase::shared_null))) + { + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } + + QMap(const QMap<Key, T> &other); + + inline ~QMap() { if (!d->ref.deref()) d->destroy(); } + + QMap<Key, T> &operator=(const QMap<Key, T> &other); + + inline QMap(QMap<Key, T> &&other) noexcept + : d(other.d) + { + other.d = static_cast<QMapData<Key, T> *>( + const_cast<QMapDataBase *>(&QMapDataBase::shared_null)); + } + + inline QMap<Key, T> &operator=(QMap<Key, T> &&other) noexcept + { QMap moved(std::move(other)); swap(moved); return *this; } + + inline void swap(QMap<Key, T> &other) noexcept { qSwap(d, other.d); } + explicit QMap(const typename std::map<Key, T> &other); + std::map<Key, T> toStdMap() const; + + bool operator==(const QMap<Key, T> &other) const; + inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + inline bool isDetached() const { return !d->ref.isShared(); } + + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + + d->ref.setSharable(sharable); + } + + inline bool isSharedWith(const QMap<Key, T> &other) const { return d == other.d; } + + void clear(); + + int remove(const Key &key); + T take(const Key &key); + + bool contains(const Key &key) const; + const Key key(const T &value, const Key &defaultKey = Key()) const; + const T value(const Key &key, const T &defaultValue = T()) const; + T &operator[](const Key &key); + const T operator[](const Key &key) const; + + QList<Key> uniqueKeys() const; + QList<Key> keys() const; + QList<Key> keys(const T &value) const; + QList<T> values() const; + QList<T> values(const Key &key) const; + int count(const Key &key) const; + + inline const Key &firstKey() const { do { } while ((false) && (!isEmpty())); return constBegin().key(); } + inline const Key &lastKey() const { do { } while ((false) && (!isEmpty())); return (constEnd() - 1).key(); } + + inline T &first() { do { } while ((false) && (!isEmpty())); return *begin(); } + inline const T &first() const { do { } while ((false) && (!isEmpty())); return *constBegin(); } + inline T &last() { do { } while ((false) && (!isEmpty())); return *(end() - 1); } + inline const T &last() const { do { } while ((false) && (!isEmpty())); return *(constEnd() - 1); } + + class const_iterator; + + class iterator + { + friend class const_iterator; + Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() : i(nullptr) { } + inline iterator(Node *node) : i(node) { } + + inline const Key &key() const { return i->key; } + inline T &value() const { return i->value; } + inline T &operator*() const { return i->value; } + inline T *operator->() const { return &i->value; } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + + inline iterator &operator++() { + i = i->nextNode(); + return *this; + } + inline iterator operator++(int) { + iterator r = *this; + i = i->nextNode(); + return r; + } + inline iterator &operator--() { + i = i->previousNode(); + return *this; + } + inline iterator operator--(int) { + iterator r = *this; + i = i->previousNode(); + return r; + } + inline iterator operator+(int j) const + { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { return *this = *this + j; } + inline iterator &operator-=(int j) { return *this = *this - j; } + + + public: + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } + + friend class QMap<Key, T>; + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + const Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() : i(nullptr) { } + inline const_iterator(const Node *node) : i(node) { } + + + + inline const_iterator(const iterator &o) + + { i = o.i; } + + inline const Key &key() const { return i->key; } + inline const T &value() const { return i->value; } + inline const T &operator*() const { return i->value; } + inline const T *operator->() const { return &i->value; } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + + inline const_iterator &operator++() { + i = i->nextNode(); + return *this; + } + inline const_iterator operator++(int) { + const_iterator r = *this; + i = i->nextNode(); + return r; + } + inline const_iterator &operator--() { + i = i->previousNode(); + return *this; + } + inline const_iterator operator--(int) { + const_iterator r = *this; + i = i->previousNode(); + return r; + } + inline const_iterator operator+(int j) const + { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { return *this = *this + j; } + inline const_iterator &operator-=(int j) { return *this = *this - j; } + + + + + + + friend class QMap<Key, T>; + }; + friend class const_iterator; + + class key_iterator + { + const_iterator i; + + public: + typedef typename const_iterator::iterator_category iterator_category; + typedef typename const_iterator::difference_type difference_type; + typedef Key value_type; + typedef const Key *pointer; + typedef const Key &reference; + + explicit key_iterator(const_iterator o) : i(o) { } + + const Key &operator*() const { return i.key(); } + const Key *operator->() const { return &i.key(); } + bool operator==(key_iterator o) const { return i == o.i; } + bool operator!=(key_iterator o) const { return i != o.i; } + + inline key_iterator &operator++() { ++i; return *this; } + inline key_iterator operator++(int) { return key_iterator(i++);} + inline key_iterator &operator--() { --i; return *this; } + inline key_iterator operator--(int) { return key_iterator(i--); } + const_iterator base() const { return i; } + }; + + + + inline iterator begin() { detach(); return iterator(d->begin()); } + inline const_iterator begin() const { return const_iterator(d->begin()); } + inline const_iterator constBegin() const { return const_iterator(d->begin()); } + inline const_iterator cbegin() const { return const_iterator(d->begin()); } + inline iterator end() { detach(); return iterator(d->end()); } + inline const_iterator end() const { return const_iterator(d->end()); } + inline const_iterator constEnd() const { return const_iterator(d->end()); } + inline const_iterator cend() const { return const_iterator(d->end()); } + inline key_iterator keyBegin() const { return key_iterator(begin()); } + inline key_iterator keyEnd() const { return key_iterator(end()); } + iterator erase(iterator it); + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return d->size; } + iterator find(const Key &key); + const_iterator find(const Key &key) const; + const_iterator constFind(const Key &key) const; + iterator lowerBound(const Key &key); + const_iterator lowerBound(const Key &key) const; + iterator upperBound(const Key &key); + const_iterator upperBound(const Key &key) const; + iterator insert(const Key &key, const T &value); + iterator insert(const_iterator pos, const Key &key, const T &value); + iterator insertMulti(const Key &key, const T &value); + iterator insertMulti(const_iterator pos, const Key &akey, const T &avalue); + QMap<Key, T> &unite(const QMap<Key, T> &other); + + + typedef Key key_type; + typedef T mapped_type; + typedef qptrdiff difference_type; + typedef int size_type; + inline bool empty() const { return isEmpty(); } + QPair<iterator, iterator> equal_range(const Key &akey); + QPair<const_iterator, const_iterator> equal_range(const Key &akey) const; + + + + + +private: + void detach_helper(); + bool isValidIterator(const const_iterator &ci) const + { + + + + + + + (void)ci;; + return true; + + } +}; + +template <class Key, class T> +inline QMap<Key, T>::QMap(const QMap<Key, T> &other) +{ + if (other.d->ref.ref()) { + d = other.d; + } else { + d = QMapData<Key, T>::create(); + if (other.d->header.left) { + d->header.left = static_cast<Node *>(other.d->header.left)->copy(d); + d->header.left->setParent(&d->header); + d->recalcMostLeftNode(); + } + } +} + +template <class Key, class T> +inline QMap<Key, T> &QMap<Key, T>::operator=(const QMap<Key, T> &other) +{ + if (d != other.d) { + QMap<Key, T> tmp(other); + tmp.swap(*this); + } + return *this; +} + +template <class Key, class T> +inline void QMap<Key, T>::clear() +{ + *this = QMap<Key, T>(); +} + + +template <class Key, class T> +inline const T QMap<Key, T>::value(const Key &akey, const T &adefaultValue) const +{ + Node *n = d->findNode(akey); + return n ? n->value : adefaultValue; +} + +template <class Key, class T> +inline const T QMap<Key, T>::operator[](const Key &akey) const +{ + return value(akey); +} + +template <class Key, class T> +inline T &QMap<Key, T>::operator[](const Key &akey) +{ + detach(); + Node *n = d->findNode(akey); + if (!n) + return *insert(akey, T()); + return n->value; +} + +template <class Key, class T> +inline int QMap<Key, T>::count(const Key &akey) const +{ + Node *firstNode; + Node *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + + const_iterator ci_first(firstNode); + const const_iterator ci_last(lastNode); + int cnt = 0; + while (ci_first != ci_last) { + ++cnt; + ++ci_first; + } + return cnt; +} + +template <class Key, class T> +inline bool QMap<Key, T>::contains(const Key &akey) const +{ + return d->findNode(akey) != nullptr; +} + +template <class Key, class T> +inline typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey, const T &avalue) +{ + detach(); + Node *n = d->root(); + Node *y = d->end(); + Node *lastNode = nullptr; + bool left = true; + while (n) { + y = n; + if (!qMapLessThanKey(n->key, akey)) { + lastNode = n; + left = true; + n = n->leftNode(); + } else { + left = false; + n = n->rightNode(); + } + } + if (lastNode && !qMapLessThanKey(akey, lastNode->key)) { + lastNode->value = avalue; + return iterator(lastNode); + } + Node *z = d->createNode(akey, avalue, y, left); + return iterator(z); +} + +template <class Key, class T> +typename QMap<Key, T>::iterator QMap<Key, T>::insert(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insert(akey, avalue); + + do { } while ((false) && (isValidIterator(pos))); + + if (pos == constEnd()) { + + Node *n = static_cast<Node *>(pos.i->left); + if (n) { + while (n->right) + n = static_cast<Node *>(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insert(akey, avalue); + + + + + Node *z = d->createNode(akey, avalue, n, false); + return iterator(z); + } + return this->insert(akey, avalue); + } else { + + + Node *next = const_cast<Node*>(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insert(akey, avalue); + + if (pos == constBegin()) { + + + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; + return iterator(next); + } + + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast<Node*>(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) { + return this->insert(akey, avalue); + } + + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; + return iterator(next); + } + + + if (prev->right == nullptr) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == nullptr) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + do { } while ((false) && (false)); + return this->insert(akey, avalue); + } + } +} + +template <class Key, class T> +inline typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const Key &akey, + const T &avalue) +{ + detach(); + Node* y = d->end(); + Node* x = static_cast<Node *>(d->root()); + bool left = true; + while (x != nullptr) { + left = !qMapLessThanKey(x->key, akey); + y = x; + x = left ? x->leftNode() : x->rightNode(); + } + Node *z = d->createNode(akey, avalue, y, left); + return iterator(z); +} + +template <class Key, class T> +typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insertMulti(akey, avalue); + + do { } while ((false) && (isValidIterator(pos))); + + if (pos == constEnd()) { + + Node *n = static_cast<Node *>(pos.i->left); + if (n) { + while (n->right) + n = static_cast<Node *>(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insertMulti(akey, avalue); + Node *z = d->createNode(akey, avalue, n, false); + return iterator(z); + } + return this->insertMulti(akey, avalue); + } else { + + + Node *next = const_cast<Node*>(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insertMulti(akey, avalue); + + if (pos == constBegin()) { + + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast<Node*>(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) + return this->insertMulti(akey, avalue); + + + if (prev->right == nullptr) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == nullptr) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + do { } while ((false) && (false)); + return this->insertMulti(akey, avalue); + } + } +} + + +template <class Key, class T> +inline typename QMap<Key, T>::const_iterator QMap<Key, T>::constFind(const Key &akey) const +{ + Node *n = d->findNode(akey); + return const_iterator(n ? n : d->end()); +} + +template <class Key, class T> +inline typename QMap<Key, T>::const_iterator QMap<Key, T>::find(const Key &akey) const +{ + return constFind(akey); +} + +template <class Key, class T> +inline typename QMap<Key, T>::iterator QMap<Key, T>::find(const Key &akey) +{ + detach(); + Node *n = d->findNode(akey); + return iterator(n ? n : d->end()); +} + +template <class Key, class T> +inline QMap<Key, T> &QMap<Key, T>::unite(const QMap<Key, T> &other) +{ + QMap<Key, T> copy(other); + const_iterator it = copy.constEnd(); + const const_iterator b = copy.constBegin(); + while (it != b) { + --it; + insertMulti(it.key(), it.value()); + } + return *this; +} + +template <class Key, class T> +QPair<typename QMap<Key, T>::iterator, typename QMap<Key, T>::iterator> QMap<Key, T>::equal_range(const Key &akey) +{ + detach(); + Node *firstNode, *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + return QPair<iterator, iterator>(iterator(firstNode), iterator(lastNode)); +} + +template <class Key, class T> +QPair<typename QMap<Key, T>::const_iterator, typename QMap<Key, T>::const_iterator> +QMap<Key, T>::equal_range(const Key &akey) const +{ + Node *firstNode, *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + return qMakePair(const_iterator(firstNode), const_iterator(lastNode)); +} +# 929 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qmap.h" +template <class Key, class T> + int QMap<Key, T>::remove(const Key &akey) +{ + detach(); + int n = 0; + while (Node *node = d->findNode(akey)) { + d->deleteNode(node); + ++n; + } + return n; +} + +template <class Key, class T> + T QMap<Key, T>::take(const Key &akey) +{ + detach(); + + Node *node = d->findNode(akey); + if (node) { + T t = node->value; + d->deleteNode(node); + return t; + } + return T(); +} + +template <class Key, class T> + typename QMap<Key, T>::iterator QMap<Key, T>::erase(iterator it) +{ + if (it == iterator(d->end())) + return it; + + do { } while ((false) && (isValidIterator(const_iterator(it)))); + + if (d->ref.isShared()) { + const_iterator oldBegin = constBegin(); + const_iterator old = const_iterator(it); + int backStepsWithSameKey = 0; + + while (old != oldBegin) { + --old; + if (qMapLessThanKey(old.key(), it.key())) + break; + ++backStepsWithSameKey; + } + + it = find(old.key()); + do { } while ((false) && (it != iterator(d->end()))); + + while (backStepsWithSameKey > 0) { + ++it; + --backStepsWithSameKey; + } + } + + Node *n = it.i; + ++it; + d->deleteNode(n); + return it; +} + +template <class Key, class T> + void QMap<Key, T>::detach_helper() +{ + QMapData<Key, T> *x = QMapData<Key, T>::create(); + if (d->header.left) { + x->header.left = static_cast<Node *>(d->header.left)->copy(x); + x->header.left->setParent(&x->header); + } + if (!d->ref.deref()) + d->destroy(); + d = x; + d->recalcMostLeftNode(); +} + +template <class Key, class T> + QList<Key> QMap<Key, T>::uniqueKeys() const +{ + QList<Key> res; + res.reserve(size()); + const_iterator i = begin(); + if (i != end()) { + for (;;) { + const Key &aKey = i.key(); + res.append(aKey); + do { + if (++i == end()) + goto break_out_of_outer_loop; + } while (!qMapLessThanKey(aKey, i.key())); + } + } +break_out_of_outer_loop: + return res; +} + +template <class Key, class T> + QList<Key> QMap<Key, T>::keys() const +{ + QList<Key> res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template <class Key, class T> + QList<Key> QMap<Key, T>::keys(const T &avalue) const +{ + QList<Key> res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template <class Key, class T> + const Key QMap<Key, T>::key(const T &avalue, const Key &defaultKey) const +{ + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + return i.key(); + ++i; + } + + return defaultKey; +} + +template <class Key, class T> + QList<T> QMap<Key, T>::values() const +{ + QList<T> res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template <class Key, class T> + QList<T> QMap<Key, T>::values(const Key &akey) const +{ + QList<T> res; + Node *n = d->findNode(akey); + if (n) { + const_iterator it(n); + do { + res.append(*it); + ++it; + } while (it != constEnd() && !qMapLessThanKey<Key>(akey, it.key())); + } + return res; +} + +template <class Key, class T> +inline typename QMap<Key, T>::const_iterator QMap<Key, T>::lowerBound(const Key &akey) const +{ + Node *lb = d->root() ? d->root()->lowerBound(akey) : nullptr; + if (!lb) + lb = d->end(); + return const_iterator(lb); +} + +template <class Key, class T> +inline typename QMap<Key, T>::iterator QMap<Key, T>::lowerBound(const Key &akey) +{ + detach(); + Node *lb = d->root() ? d->root()->lowerBound(akey) : nullptr; + if (!lb) + lb = d->end(); + return iterator(lb); +} + +template <class Key, class T> +inline typename QMap<Key, T>::const_iterator +QMap<Key, T>::upperBound(const Key &akey) const +{ + Node *ub = d->root() ? d->root()->upperBound(akey) : nullptr; + if (!ub) + ub = d->end(); + return const_iterator(ub); +} + +template <class Key, class T> +inline typename QMap<Key, T>::iterator QMap<Key, T>::upperBound(const Key &akey) +{ + detach(); + Node *ub = d->root() ? d->root()->upperBound(akey) : nullptr; + if (!ub) + ub = d->end(); + return iterator(ub); +} + +template <class Key, class T> + bool QMap<Key, T>::operator==(const QMap<Key, T> &other) const +{ + if (size() != other.size()) + return false; + if (d == other.d) + return true; + + const_iterator it1 = begin(); + const_iterator it2 = other.begin(); + + while (it1 != end()) { + if (!(it1.value() == it2.value()) || qMapLessThanKey(it1.key(), it2.key()) || qMapLessThanKey(it2.key(), it1.key())) + return false; + ++it2; + ++it1; + } + return true; +} + +template <class Key, class T> + QMap<Key, T>::QMap(const std::map<Key, T> &other) +{ + d = QMapData<Key, T>::create(); + typename std::map<Key,T>::const_iterator it = other.end(); + while (it != other.begin()) { + --it; + d->createNode((*it).first, (*it).second, d->begin(), true); + } +} + +template <class Key, class T> + std::map<Key, T> QMap<Key, T>::toStdMap() const +{ + std::map<Key, T> map; + const_iterator it = end(); + while (it != begin()) { + --it; + map.insert(map.begin(), std::pair<Key, T>(it.key(), it.value())); + } + return map; +} + +template <class Key, class T> +class QMultiMap : public QMap<Key, T> +{ +public: + QMultiMap() noexcept {} + + inline QMultiMap(std::initializer_list<std::pair<Key,T> > list) + { + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } + + QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {} + + QMultiMap(QMap<Key, T> &&other) noexcept : QMap<Key, T>(std::move(other)) {} + + void swap(QMultiMap<Key, T> &other) noexcept { QMap<Key, T>::swap(other); } + + inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value) + { return QMap<Key, T>::insert(key, value); } + inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value) + { return QMap<Key, T>::insertMulti(key, value); } + inline typename QMap<Key, T>::iterator insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value) + { return QMap<Key, T>::insertMulti(pos, key, value); } + + inline QMultiMap &operator+=(const QMultiMap &other) + { this->unite(other); return *this; } + inline QMultiMap operator+(const QMultiMap &other) const + { QMultiMap result = *this; result += other; return result; } + + using QMap<Key, T>::contains; + using QMap<Key, T>::remove; + using QMap<Key, T>::count; + using QMap<Key, T>::find; + using QMap<Key, T>::constFind; + + bool contains(const Key &key, const T &value) const; + + int remove(const Key &key, const T &value); + + int count(const Key &key, const T &value) const; + + typename QMap<Key, T>::iterator find(const Key &key, const T &value) { + typename QMap<Key, T>::iterator i(find(key)); + typename QMap<Key, T>::iterator end(this->end()); + while (i != end && !qMapLessThanKey<Key>(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap<Key, T>::const_iterator find(const Key &key, const T &value) const { + typename QMap<Key, T>::const_iterator i(constFind(key)); + typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd()); + while (i != end && !qMapLessThanKey<Key>(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap<Key, T>::const_iterator constFind(const Key &key, const T &value) const + { return find(key, value); } +private: + T &operator[](const Key &key); + const T operator[](const Key &key) const; +}; + +template <class Key, class T> +inline bool QMultiMap<Key, T>::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QMap<Key, T>::constEnd(); +} + +template <class Key, class T> +inline int QMultiMap<Key, T>::remove(const Key &key, const T &value) +{ + int n = 0; + typename QMap<Key, T>::iterator i(find(key)); + typename QMap<Key, T>::iterator end(QMap<Key, T>::end()); + while (i != end && !qMapLessThanKey<Key>(key, i.key())) { + if (i.value() == value) { + i = this->erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template <class Key, class T> +inline int QMultiMap<Key, T>::count(const Key &key, const T &value) const +{ + int n = 0; + typename QMap<Key, T>::const_iterator i(constFind(key)); + typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd()); + while (i != end && !qMapLessThanKey<Key>(key, i.key())) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +template <class Key, class T> class QMapIterator { typedef typename QMap<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QMap<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QMapIterator(const QMap<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QMapIterator &operator=(const QMap<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline const Key &key() const { do { } while ((false) && (item_exists())); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } }; +template <class Key, class T> class QMutableMapIterator { typedef typename QMap<Key,T>::iterator iterator; typedef typename QMap<Key,T>::const_iterator const_iterator; typedef iterator Item; QMap<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableMapIterator(QMap<Key,T> &container) : c(&container) { i = c->begin(); n = c->end(); } inline QMutableMapIterator &operator=(QMap<Key,T> &container) { c = &container; i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { do { } while ((false) && (item_exists())); return *n; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline const Key &key() const { do { } while ((false) && (item_exists())); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } }; + + +# 1 "../../include/QtCore/qmap.h" 2 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qhash.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" +# 1 "../../include/QtCore/qchar.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 2 +# 1 "../../include/QtCore/qiterator.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 2 +# 1 "../../include/QtCore/qrefcount.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 2 +# 1 "../../include/QtCore/qhashfunctions.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" 2 +# 60 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" + + +struct __attribute__((visibility("default"))) QHashData +{ + struct Node { + Node *next; + uint h; + }; + + Node *fakeNext; + Node **buckets; + QtPrivate::RefCount ref; + int size; + int nodeSize; + short userNumBits; + short numBits; + int numBuckets; + uint seed; + uint sharable : 1; + uint strictAlignment : 1; + uint reserved : 30; + + void *allocateNode(int nodeAlign); + void freeNode(void *node); + QHashData *detach_helper(void (*node_duplicate)(Node *, void *), void (*node_delete)(Node *), + int nodeSize, int nodeAlign); + bool willGrow(); + void hasShrunk(); + void rehash(int hint); + void free_helper(void (*node_delete)(Node *)); + Node *firstNode(); + + + + + static Node *nextNode(Node *node); + static Node *previousNode(Node *node); + + static const QHashData shared_null; +}; + +inline bool QHashData::willGrow() +{ + if (size >= numBuckets) { + rehash(numBits + 1); + return true; + } else { + return false; + } +} + +inline void QHashData::hasShrunk() +{ + if (size <= (numBuckets >> 3) && numBits > userNumBits) { + try { + rehash(qMax(int(numBits) - 2, int(userNumBits))); + } catch (const std::bad_alloc &) { + + } + } +} + +inline QHashData::Node *QHashData::firstNode() +{ + Node *e = reinterpret_cast<Node *>(this); + Node **bucket = buckets; + int n = numBuckets; + while (n--) { + if (*bucket != e) + return *bucket; + ++bucket; + } + return e; +} + +struct QHashDummyValue +{ +}; + +inline bool operator==(const QHashDummyValue & , const QHashDummyValue & ) +{ + return true; +} + +template<> class QTypeInfo<QHashDummyValue > { public: enum { isComplex = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QHashDummyValue)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QHashDummyValue >::value, isDummy = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QHashDummyValue) }; static inline const char *name() { return "QHashDummyValue"; } }; + +template <class Key, class T> +struct QHashNode +{ + QHashNode *next; + const uint h; + const Key key; + T value; + + inline QHashNode(const Key &key0, const T &value0, uint hash, QHashNode *n) + : next(n), h(hash), key(key0), value(value0) {} + inline bool same_key(uint h0, const Key &key0) const { return h0 == h && key0 == key; } + +private: + QHashNode(const QHashNode &) = delete; QHashNode &operator=(const QHashNode &) = delete; +}; + + +template <class Key> +struct QHashNode<Key, QHashDummyValue> +{ + union { + QHashNode *next; + QHashDummyValue value; + }; + const uint h; + const Key key; + + inline QHashNode(const Key &key0, const QHashDummyValue &, uint hash, QHashNode *n) + : next(n), h(hash), key(key0) {} + inline bool same_key(uint h0, const Key &key0) const { return h0 == h && key0 == key; } + +private: + QHashNode(const QHashNode &) = delete; QHashNode &operator=(const QHashNode &) = delete; +}; +# 224 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qhash.h" +template <class Key, class T> +class QHash +{ + typedef QHashNode<Key, T> Node; + + union { + QHashData *d; + QHashNode<Key, T> *e; + }; + + static inline Node *concrete(QHashData::Node *node) { + return reinterpret_cast<Node *>(node); + } + + static inline int alignOfNode() { return qMax<int>(sizeof(void*), __alignof__(Node)); } + +public: + inline QHash() noexcept : d(const_cast<QHashData *>(&QHashData::shared_null)) { } + + inline QHash(std::initializer_list<std::pair<Key,T> > list) + : d(const_cast<QHashData *>(&QHashData::shared_null)) + { + reserve(int(list.size())); + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } + + QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } + ~QHash() { if (!d->ref.deref()) freeData(d); } + + QHash &operator=(const QHash &other); + + QHash(QHash &&other) noexcept : d(other.d) { other.d = const_cast<QHashData *>(&QHashData::shared_null); } + QHash &operator=(QHash &&other) noexcept + { QHash moved(std::move(other)); swap(moved); return *this; } + + void swap(QHash &other) noexcept { qSwap(d, other.d); } + + bool operator==(const QHash &other) const; + bool operator!=(const QHash &other) const { return !(*this == other); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + inline int capacity() const { return d->numBuckets; } + void reserve(int size); + inline void squeeze() { reserve(1); } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + inline bool isDetached() const { return !d->ref.isShared(); } + + inline void setSharable(bool sharable) { if (!sharable) detach(); if (d != &QHashData::shared_null) d->sharable = sharable; } + + bool isSharedWith(const QHash &other) const { return d == other.d; } + + void clear(); + + int remove(const Key &key); + T take(const Key &key); + + bool contains(const Key &key) const; + const Key key(const T &value) const; + const Key key(const T &value, const Key &defaultKey) const; + const T value(const Key &key) const; + const T value(const Key &key, const T &defaultValue) const; + T &operator[](const Key &key); + const T operator[](const Key &key) const; + + QList<Key> uniqueKeys() const; + QList<Key> keys() const; + QList<Key> keys(const T &value) const; + QList<T> values() const; + QList<T> values(const Key &key) const; + int count(const Key &key) const; + + class const_iterator; + + class iterator + { + friend class const_iterator; + friend class QHash<Key, T>; + friend class QSet<Key>; + QHashData::Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() : i(nullptr) { } + explicit inline iterator(void *node) : i(reinterpret_cast<QHashData::Node *>(node)) { } + + inline const Key &key() const { return concrete(i)->key; } + inline T &value() const { return concrete(i)->value; } + inline T &operator*() const { return concrete(i)->value; } + inline T *operator->() const { return &concrete(i)->value; } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + + inline iterator &operator++() { + i = QHashData::nextNode(i); + return *this; + } + inline iterator operator++(int) { + iterator r = *this; + i = QHashData::nextNode(i); + return r; + } + inline iterator &operator--() { + i = QHashData::previousNode(i); + return *this; + } + inline iterator operator--(int) { + iterator r = *this; + i = QHashData::previousNode(i); + return r; + } + inline iterator operator+(int j) const + { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { return *this = *this + j; } + inline iterator &operator-=(int j) { return *this = *this - j; } + + + public: + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } + + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + friend class QHash<Key, T>; + friend class QSet<Key>; + QHashData::Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() : i(nullptr) { } + explicit inline const_iterator(void *node) + : i(reinterpret_cast<QHashData::Node *>(node)) { } + + + + inline const_iterator(const iterator &o) + + { i = o.i; } + + inline const Key &key() const { return concrete(i)->key; } + inline const T &value() const { return concrete(i)->value; } + inline const T &operator*() const { return concrete(i)->value; } + inline const T *operator->() const { return &concrete(i)->value; } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + + inline const_iterator &operator++() { + i = QHashData::nextNode(i); + return *this; + } + inline const_iterator operator++(int) { + const_iterator r = *this; + i = QHashData::nextNode(i); + return r; + } + inline const_iterator &operator--() { + i = QHashData::previousNode(i); + return *this; + } + inline const_iterator operator--(int) { + const_iterator r = *this; + i = QHashData::previousNode(i); + return r; + } + inline const_iterator operator+(int j) const + { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { return *this = *this + j; } + inline const_iterator &operator-=(int j) { return *this = *this - j; } + + + + + + + + }; + friend class const_iterator; + + class key_iterator + { + const_iterator i; + + public: + typedef typename const_iterator::iterator_category iterator_category; + typedef typename const_iterator::difference_type difference_type; + typedef Key value_type; + typedef const Key *pointer; + typedef const Key &reference; + + explicit key_iterator(const_iterator o) : i(o) { } + + const Key &operator*() const { return i.key(); } + const Key *operator->() const { return &i.key(); } + bool operator==(key_iterator o) const { return i == o.i; } + bool operator!=(key_iterator o) const { return i != o.i; } + + inline key_iterator &operator++() { ++i; return *this; } + inline key_iterator operator++(int) { return key_iterator(i++);} + inline key_iterator &operator--() { --i; return *this; } + inline key_iterator operator--(int) { return key_iterator(i--); } + const_iterator base() const { return i; } + }; + + + inline iterator begin() { detach(); return iterator(d->firstNode()); } + inline const_iterator begin() const { return const_iterator(d->firstNode()); } + inline const_iterator cbegin() const { return const_iterator(d->firstNode()); } + inline const_iterator constBegin() const { return const_iterator(d->firstNode()); } + inline iterator end() { detach(); return iterator(e); } + inline const_iterator end() const { return const_iterator(e); } + inline const_iterator cend() const { return const_iterator(e); } + inline const_iterator constEnd() const { return const_iterator(e); } + inline key_iterator keyBegin() const { return key_iterator(begin()); } + inline key_iterator keyEnd() const { return key_iterator(end()); } + + QPair<iterator, iterator> equal_range(const Key &key); + QPair<const_iterator, const_iterator> equal_range(const Key &key) const noexcept; + iterator erase(iterator it) { return erase(const_iterator(it.i)); } + iterator erase(const_iterator it); + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return d->size; } + iterator find(const Key &key); + const_iterator find(const Key &key) const; + const_iterator constFind(const Key &key) const; + iterator insert(const Key &key, const T &value); + iterator insertMulti(const Key &key, const T &value); + QHash &unite(const QHash &other); + + + typedef T mapped_type; + typedef Key key_type; + typedef qptrdiff difference_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + + + + + + +private: + void detach_helper(); + void freeData(QHashData *d); + Node **findNode(const Key &key, uint *hp = nullptr) const; + Node **findNode(const Key &key, uint h) const; + Node *createNode(uint h, const Key &key, const T &value, Node **nextNode); + void deleteNode(Node *node); + static void deleteNode2(QHashData::Node *node); + + static void duplicateNode(QHashData::Node *originalNode, void *newNode); + + bool isValidIterator(const iterator &it) const noexcept + { return isValidNode(it.i); } + bool isValidIterator(const const_iterator &it) const noexcept + { return isValidNode(it.i); } + bool isValidNode(QHashData::Node *node) const noexcept + { + + + + + + (void)node;; + return true; + + } + friend class QSet<Key>; +}; + + +template <class Key, class T> +inline void QHash<Key, T>::deleteNode(Node *node) +{ + deleteNode2(reinterpret_cast<QHashData::Node*>(node)); + d->freeNode(node); +} + +template <class Key, class T> +inline void QHash<Key, T>::deleteNode2(QHashData::Node *node) +{ + + + + concrete(node)->~Node(); + +} + +template <class Key, class T> +inline void QHash<Key, T>::duplicateNode(QHashData::Node *node, void *newNode) +{ + Node *concreteNode = concrete(node); + new (newNode) Node(concreteNode->key, concreteNode->value, concreteNode->h, nullptr); +} + +template <class Key, class T> +inline typename QHash<Key, T>::Node * +QHash<Key, T>::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode) +{ + Node *node = new (d->allocateNode(alignOfNode())) Node(akey, avalue, ah, *anextNode); + *anextNode = node; + ++d->size; + return node; +} + +template <class Key, class T> +inline QHash<Key, T> &QHash<Key, T>::unite(const QHash &other) +{ + QHash copy(other); + const_iterator it = copy.constEnd(); + while (it != copy.constBegin()) { + --it; + insertMulti(it.key(), it.value()); + } + return *this; +} + +template <class Key, class T> + void QHash<Key, T>::freeData(QHashData *x) +{ + x->free_helper(deleteNode2); +} + +template <class Key, class T> +inline void QHash<Key, T>::clear() +{ + *this = QHash(); +} + +template <class Key, class T> + void QHash<Key, T>::detach_helper() +{ + QHashData *x = d->detach_helper(duplicateNode, deleteNode2, sizeof(Node), alignOfNode()); + if (!d->ref.deref()) + freeData(d); + d = x; +} + +template <class Key, class T> +inline QHash<Key, T> &QHash<Key, T>::operator=(const QHash &other) +{ + if (d != other.d) { + QHashData *o = other.d; + o->ref.ref(); + if (!d->ref.deref()) + freeData(d); + d = o; + if (!d->sharable) + detach_helper(); + } + return *this; +} + +template <class Key, class T> +inline const T QHash<Key, T>::value(const Key &akey) const +{ + Node *node; + if (d->size == 0 || (node = *findNode(akey)) == e) { + return T(); + } else { + return node->value; + } +} + +template <class Key, class T> +inline const T QHash<Key, T>::value(const Key &akey, const T &adefaultValue) const +{ + Node *node; + if (d->size == 0 || (node = *findNode(akey)) == e) { + return adefaultValue; + } else { + return node->value; + } +} + +template <class Key, class T> + QList<Key> QHash<Key, T>::uniqueKeys() const +{ + QList<Key> res; + res.reserve(size()); + const_iterator i = begin(); + if (i != end()) { + for (;;) { + const Key &aKey = i.key(); + res.append(aKey); + do { + if (++i == end()) + goto break_out_of_outer_loop; + } while (aKey == i.key()); + } + } +break_out_of_outer_loop: + return res; +} + +template <class Key, class T> + QList<Key> QHash<Key, T>::keys() const +{ + QList<Key> res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template <class Key, class T> + QList<Key> QHash<Key, T>::keys(const T &avalue) const +{ + QList<Key> res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template <class Key, class T> + const Key QHash<Key, T>::key(const T &avalue) const +{ + return key(avalue, Key()); +} + +template <class Key, class T> + const Key QHash<Key, T>::key(const T &avalue, const Key &defaultValue) const +{ + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + return i.key(); + ++i; + } + + return defaultValue; +} + +template <class Key, class T> + QList<T> QHash<Key, T>::values() const +{ + QList<T> res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template <class Key, class T> + QList<T> QHash<Key, T>::values(const Key &akey) const +{ + QList<T> res; + Node *node = *findNode(akey); + if (node != e) { + do { + res.append(node->value); + } while ((node = node->next) != e && node->key == akey); + } + return res; +} + +template <class Key, class T> + int QHash<Key, T>::count(const Key &akey) const +{ + int cnt = 0; + Node *node = *findNode(akey); + if (node != e) { + do { + ++cnt; + } while ((node = node->next) != e && node->key == akey); + } + return cnt; +} + +template <class Key, class T> +inline const T QHash<Key, T>::operator[](const Key &akey) const +{ + return value(akey); +} + +template <class Key, class T> +inline T &QHash<Key, T>::operator[](const Key &akey) +{ + detach(); + + uint h; + Node **node = findNode(akey, &h); + if (*node == e) { + if (d->willGrow()) + node = findNode(akey, &h); + return createNode(h, akey, T(), node)->value; + } + return (*node)->value; +} + +template <class Key, class T> +inline typename QHash<Key, T>::iterator QHash<Key, T>::insert(const Key &akey, + const T &avalue) +{ + detach(); + + uint h; + Node **node = findNode(akey, &h); + if (*node == e) { + if (d->willGrow()) + node = findNode(akey, &h); + return iterator(createNode(h, akey, avalue, node)); + } + + if (!QtPrivate::is_same<T, QHashDummyValue>::value) + (*node)->value = avalue; + return iterator(*node); +} + +template <class Key, class T> +inline typename QHash<Key, T>::iterator QHash<Key, T>::insertMulti(const Key &akey, + const T &avalue) +{ + detach(); + d->willGrow(); + + uint h; + Node **nextNode = findNode(akey, &h); + return iterator(createNode(h, akey, avalue, nextNode)); +} + +template <class Key, class T> + int QHash<Key, T>::remove(const Key &akey) +{ + if (isEmpty()) + return 0; + detach(); + + int oldSize = d->size; + Node **node = findNode(akey); + if (*node != e) { + bool deleteNext = true; + do { + Node *next = (*node)->next; + deleteNext = (next != e && next->key == (*node)->key); + deleteNode(*node); + *node = next; + --d->size; + } while (deleteNext); + d->hasShrunk(); + } + return oldSize - d->size; +} + +template <class Key, class T> + T QHash<Key, T>::take(const Key &akey) +{ + if (isEmpty()) + return T(); + detach(); + + Node **node = findNode(akey); + if (*node != e) { + T t = (*node)->value; + Node *next = (*node)->next; + deleteNode(*node); + *node = next; + --d->size; + d->hasShrunk(); + return t; + } + return T(); +} + +template <class Key, class T> + typename QHash<Key, T>::iterator QHash<Key, T>::erase(const_iterator it) +{ + do { } while ((false) && (isValidIterator(it))); + + if (it == const_iterator(e)) + return iterator(it.i); + + if (d->ref.isShared()) { + + int bucketNum = (it.i->h % d->numBuckets); + const_iterator bucketIterator(*(d->buckets + bucketNum)); + int stepsFromBucketStartToIte = 0; + while (bucketIterator != it) { + ++stepsFromBucketStartToIte; + ++bucketIterator; + } + detach(); + it = const_iterator(*(d->buckets + bucketNum)); + while (stepsFromBucketStartToIte > 0) { + --stepsFromBucketStartToIte; + ++it; + } + } + + iterator ret(it.i); + ++ret; + + Node *node = concrete(it.i); + Node **node_ptr = reinterpret_cast<Node **>(&d->buckets[node->h % d->numBuckets]); + while (*node_ptr != node) + node_ptr = &(*node_ptr)->next; + *node_ptr = node->next; + deleteNode(node); + --d->size; + return ret; +} + +template <class Key, class T> +inline void QHash<Key, T>::reserve(int asize) +{ + detach(); + d->rehash(-qMax(asize, 1)); +} + +template <class Key, class T> +inline typename QHash<Key, T>::const_iterator QHash<Key, T>::find(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template <class Key, class T> +inline typename QHash<Key, T>::const_iterator QHash<Key, T>::constFind(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template <class Key, class T> +inline typename QHash<Key, T>::iterator QHash<Key, T>::find(const Key &akey) +{ + detach(); + return iterator(*findNode(akey)); +} + +template <class Key, class T> +inline bool QHash<Key, T>::contains(const Key &akey) const +{ + return *findNode(akey) != e; +} + +template <class Key, class T> + typename QHash<Key, T>::Node **QHash<Key, T>::findNode(const Key &akey, uint h) const +{ + Node **node; + + if (d->numBuckets) { + node = reinterpret_cast<Node **>(&d->buckets[h % d->numBuckets]); + do { } while ((false) && (*node == e || (*node)->next)); + while (*node != e && !(*node)->same_key(h, akey)) + node = &(*node)->next; + } else { + node = const_cast<Node **>(reinterpret_cast<const Node * const *>(&e)); + } + return node; +} + +template <class Key, class T> + typename QHash<Key, T>::Node **QHash<Key, T>::findNode(const Key &akey, + uint *ahp) const +{ + uint h = 0; + + if (d->numBuckets || ahp) { + h = qHash(akey, d->seed); + if (ahp) + *ahp = h; + } + return findNode(akey, h); +} + +template <class Key, class T> + bool QHash<Key, T>::operator==(const QHash &other) const +{ + if (size() != other.size()) + return false; + if (d == other.d) + return true; + + const_iterator it = begin(); + + while (it != end()) { + const Key &akey = it.key(); + + const_iterator it2 = other.find(akey); + do { + if (it2 == other.end() || !(it2.key() == akey)) + return false; + if (!(it.value() == it2.value())) + return false; + ++it; + ++it2; + } while (it != end() && it.key() == akey); + } + return true; +} + +template <class Key, class T> +QPair<typename QHash<Key, T>::iterator, typename QHash<Key, T>::iterator> QHash<Key, T>::equal_range(const Key &akey) +{ + detach(); + auto pair = qAsConst(*this).equal_range(akey); + return qMakePair(iterator(pair.first.i), iterator(pair.second.i)); +} + +template <class Key, class T> +QPair<typename QHash<Key, T>::const_iterator, typename QHash<Key, T>::const_iterator> QHash<Key, T>::equal_range(const Key &akey) const noexcept +{ + uint h; + Node *node = *findNode(akey, &h); + const_iterator firstIt = const_iterator(node); + + if (node != e) { + + + + + while (node->next != e && node->next->key == akey) + node = node->next; + + + + + + node = concrete(QHashData::nextNode(reinterpret_cast<QHashData::Node *>(node))); + } + + return qMakePair(firstIt, const_iterator(node)); +} + +template <class Key, class T> +class QMultiHash : public QHash<Key, T> +{ +public: + QMultiHash() noexcept {} + + inline QMultiHash(std::initializer_list<std::pair<Key,T> > list) + { + this->reserve(int(list.size())); + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } + + + + + QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {} + + QMultiHash(QHash<Key, T> &&other) noexcept : QHash<Key, T>(std::move(other)) {} + + void swap(QMultiHash &other) noexcept { QHash<Key, T>::swap(other); } + + inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value) + { return QHash<Key, T>::insert(key, value); } + + inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value) + { return QHash<Key, T>::insertMulti(key, value); } + + inline QMultiHash &operator+=(const QMultiHash &other) + { this->unite(other); return *this; } + inline QMultiHash operator+(const QMultiHash &other) const + { QMultiHash result = *this; result += other; return result; } + + using QHash<Key, T>::contains; + using QHash<Key, T>::remove; + using QHash<Key, T>::count; + using QHash<Key, T>::find; + using QHash<Key, T>::constFind; + + bool contains(const Key &key, const T &value) const; + + int remove(const Key &key, const T &value); + + int count(const Key &key, const T &value) const; + + typename QHash<Key, T>::iterator find(const Key &key, const T &value) { + typename QHash<Key, T>::iterator i(find(key)); + typename QHash<Key, T>::iterator end(this->end()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash<Key, T>::const_iterator find(const Key &key, const T &value) const { + typename QHash<Key, T>::const_iterator i(constFind(key)); + typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const + { return find(key, value); } +private: + T &operator[](const Key &key); + const T operator[](const Key &key) const; +}; + +template <class Key, class T> +inline bool QMultiHash<Key, T>::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QHash<Key, T>::constEnd(); +} + +template <class Key, class T> +inline int QMultiHash<Key, T>::remove(const Key &key, const T &value) +{ + int n = 0; + typename QHash<Key, T>::iterator i(find(key)); + typename QHash<Key, T>::iterator end(QHash<Key, T>::end()); + while (i != end && i.key() == key) { + if (i.value() == value) { + i = this->erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template <class Key, class T> +inline int QMultiHash<Key, T>::count(const Key &key, const T &value) const +{ + int n = 0; + typename QHash<Key, T>::const_iterator i(constFind(key)); + typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +__attribute__((visibility("default"))) int qGlobalQHashSeed(); +__attribute__((visibility("default"))) void qSetGlobalQHashSeed(int newSeed); + +template <class Key, class T> class QHashIterator { typedef typename QHash<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QHash<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QHashIterator(const QHash<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QHashIterator &operator=(const QHash<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline const Key &key() const { do { } while ((false) && (item_exists())); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } }; +template <class Key, class T> class QMutableHashIterator { typedef typename QHash<Key,T>::iterator iterator; typedef typename QHash<Key,T>::const_iterator const_iterator; typedef iterator Item; QHash<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableHashIterator(QHash<Key,T> &container) : c(&container) { i = c->begin(); n = c->end(); } inline QMutableHashIterator &operator=(QHash<Key,T> &container) { c = &container; i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { do { } while ((false) && (item_exists())); return *n; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline const Key &key() const { do { } while ((false) && (item_exists())); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } }; + + +# 1 "../../include/QtCore/qhash.h" 2 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qstringlist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" +# 1 "../../include/QtCore/qlist.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 +# 1 "../../include/QtCore/qstringlist.h" 2 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 +# 1 "../../include/QtCore/qobject.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" +# 1 "../../include/QtCore/qobjectdefs.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 +# 1 "../../include/QtCore/qbytearray.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 + + + +# 1 "../../include/QtCore/qscopedpointer.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qscopedpointer.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qscopedpointer.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qscopedpointer.h" 2 + + + + + +template <typename T> +struct QScopedPointerDeleter +{ + static inline void cleanup(T *pointer) + { + + + + typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ]; + (void) sizeof(IsIncompleteType); + + delete pointer; + } +}; + +template <typename T> +struct QScopedPointerArrayDeleter +{ + static inline void cleanup(T *pointer) + { + + + + typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ]; + (void) sizeof(IsIncompleteType); + + delete [] pointer; + } +}; + +struct QScopedPointerPodDeleter +{ + static inline void cleanup(void *pointer) { if (pointer) free(pointer); } +}; + + +template <typename T> +struct QScopedPointerObjectDeleteLater +{ + static inline void cleanup(T *pointer) { if (pointer) pointer->deleteLater(); } +}; + +class QObject; +typedef QScopedPointerObjectDeleteLater<QObject> QScopedPointerDeleteLater; + + +template <typename T, typename Cleanup = QScopedPointerDeleter<T> > +class QScopedPointer +{ + typedef T *QScopedPointer:: *RestrictedBool; +public: + explicit inline QScopedPointer(T *p = nullptr) : d(p) + { + } + + inline ~QScopedPointer() + { + T *oldD = this->d; + Cleanup::cleanup(oldD); + } + + inline T &operator*() const + { + do { } while ((false) && (d)); + return *d; + } + + inline T *operator->() const + { + do { } while ((false) && (d)); + return d; + } + + inline bool operator!() const + { + return !d; + } + + + + + + + + inline operator RestrictedBool() const + { + return isNull() ? nullptr : &QScopedPointer::d; + } + + + inline T *data() const + { + return d; + } + + inline bool isNull() const + { + return !d; + } + + inline void reset(T *other = nullptr) + { + if (d == other) + return; + T *oldD = d; + d = other; + Cleanup::cleanup(oldD); + } + + inline T *take() + { + T *oldD = d; + d = nullptr; + return oldD; + } + + inline void swap(QScopedPointer<T, Cleanup> &other) + { + qSwap(d, other.d); + } + + typedef T *pointer; + +protected: + T *d; + +private: + QScopedPointer(const QScopedPointer &) = delete; QScopedPointer &operator=(const QScopedPointer &) = delete; +}; + +template <class T, class Cleanup> +inline bool operator==(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) +{ + return lhs.data() == rhs.data(); +} + +template <class T, class Cleanup> +inline bool operator!=(const QScopedPointer<T, Cleanup> &lhs, const QScopedPointer<T, Cleanup> &rhs) +{ + return lhs.data() != rhs.data(); +} + +template <class T, class Cleanup> +inline void qSwap(QScopedPointer<T, Cleanup> &p1, QScopedPointer<T, Cleanup> &p2) +{ p1.swap(p2); } + + +namespace std { + template <class T, class Cleanup> + inline void swap(::QScopedPointer<T, Cleanup> &p1, ::QScopedPointer<T, Cleanup> &p2) + { p1.swap(p2); } +} + + + + +namespace QtPrivate { + template <typename X, typename Y> struct QScopedArrayEnsureSameType; + template <typename X> struct QScopedArrayEnsureSameType<X,X> { typedef X* Type; }; + template <typename X> struct QScopedArrayEnsureSameType<const X, X> { typedef X* Type; }; +} + +template <typename T, typename Cleanup = QScopedPointerArrayDeleter<T> > +class QScopedArrayPointer : public QScopedPointer<T, Cleanup> +{ +public: + inline QScopedArrayPointer() : QScopedPointer<T, Cleanup>(nullptr) {} + + template <typename D> + explicit inline QScopedArrayPointer(D *p, typename QtPrivate::QScopedArrayEnsureSameType<T,D>::Type = nullptr) + : QScopedPointer<T, Cleanup>(p) + { + } + + inline T &operator[](int i) + { + return this->d[i]; + } + + inline const T &operator[](int i) const + { + return this->d[i]; + } + +private: + explicit inline QScopedArrayPointer(void *) { +# 243 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qscopedpointer.h" + } + + QScopedArrayPointer(const QScopedArrayPointer &) = delete; QScopedArrayPointer &operator=(const QScopedArrayPointer &) = delete; +}; + + +# 1 "../../include/QtCore/qscopedpointer.h" 2 +# 54 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 +# 1 "../../include/QtCore/qmetatype.h" 1 +# 55 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 + +# 1 "../../include/QtCore/qobject_impl.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject_impl.h" 1 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject_impl.h" + + + +namespace QtPrivate { +# 93 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject_impl.h" + template <typename ArgList> struct TypesAreDeclaredMetaType { enum { Value = false }; }; + template <> struct TypesAreDeclaredMetaType<List<>> { enum { Value = true }; }; + template <typename Arg, typename... Tail> struct TypesAreDeclaredMetaType<List<Arg, Tail...> > + { enum { Value = QMetaTypeId2<Arg>::Defined && TypesAreDeclaredMetaType<List<Tail...>>::Value }; }; + + template <typename ArgList, bool Declared = TypesAreDeclaredMetaType<ArgList>::Value > struct ConnectionTypes + { static const int *types() { return nullptr; } }; + template <> struct ConnectionTypes<List<>, true> + { static const int *types() { return nullptr; } }; + template <typename... Args> struct ConnectionTypes<List<Args...>, true> + { static const int *types() { static const int t[sizeof...(Args) + 1] = { (QtPrivate::QMetaTypeIdHelper<Args>::qt_metatype_id())..., 0 }; return t; } }; + + + + class QSlotObjectBase { + QAtomicInt m_ref; + + + + typedef void (*ImplFn)(int which, QSlotObjectBase* this_, QObject *receiver, void **args, bool *ret); + const ImplFn m_impl; + protected: + enum Operation { + Destroy, + Call, + Compare, + + NumOperations + }; + public: + explicit QSlotObjectBase(ImplFn fn) : m_ref(1), m_impl(fn) {} + + inline int ref() noexcept { return m_ref.ref(); } + inline void destroyIfLastRef() noexcept + { if (!m_ref.deref()) m_impl(Destroy, this, nullptr, nullptr, nullptr); } + + inline bool compare(void **a) { bool ret; m_impl(Compare, this, nullptr, a, &ret); return ret; } + inline void call(QObject *r, void **a) { m_impl(Call, this, r, a, nullptr); } + protected: + ~QSlotObjectBase() {} + private: + QSlotObjectBase(const QSlotObjectBase &) = delete; QSlotObjectBase &operator=(const QSlotObjectBase &) = delete; + }; + + + template<typename Func, typename Args, typename R> class QSlotObject : public QSlotObjectBase + { + typedef QtPrivate::FunctionPointer<Func> FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast<QSlotObject*>(this_); + break; + case Call: + FuncType::template call<Args, R>(static_cast<QSlotObject*>(this_)->function, static_cast<typename FuncType::Object *>(r), a); + break; + case Compare: + *ret = *reinterpret_cast<Func *>(a) == static_cast<QSlotObject*>(this_)->function; + break; + case NumOperations: ; + } + } + public: + explicit QSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} + }; + + + template<typename Func, typename Args, typename R> class QStaticSlotObject : public QSlotObjectBase + { + typedef QtPrivate::FunctionPointer<Func> FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast<QStaticSlotObject*>(this_); + break; + case Call: + FuncType::template call<Args, R>(static_cast<QStaticSlotObject*>(this_)->function, r, a); + break; + case Compare: + *ret = false; + break; + case NumOperations: ; + } + } + public: + explicit QStaticSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} + }; + + + + template<typename Func, int N, typename Args, typename R> class QFunctorSlotObject : public QSlotObjectBase + { + typedef QtPrivate::Functor<Func, N> FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast<QFunctorSlotObject*>(this_); + break; + case Call: + FuncType::template call<Args, R>(static_cast<QFunctorSlotObject*>(this_)->function, r, a); + break; + case Compare: + *ret = false; + break; + case NumOperations: ; + } + } + public: + explicit QFunctorSlotObject(const Func &f) : QSlotObjectBase(&impl), function(f) {} + }; +} + + + +# 1 "../../include/QtCore/qobject_impl.h" 2 +# 57 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" 2 + + + + +class QEvent; +class QTimerEvent; +class QChildEvent; +struct QMetaObject; +class QVariant; +class QObjectPrivate; +class QObject; +class QThread; +class QWidget; + +class QRegExp; + + +class QRegularExpression; + + +class QObjectUserData; + +struct QDynamicMetaObjectData; + +typedef QList<QObject*> QObjectList; + +__attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QString &name, + const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); +__attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QRegExp &re, + const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); +__attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re, + const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); +__attribute__((visibility("default"))) QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo, Qt::FindChildOptions options); + +class __attribute__((visibility("default"))) QObjectData { +public: + virtual ~QObjectData() = 0; + QObject *q_ptr; + QObject *parent; + QObjectList children; + + uint isWidget : 1; + uint blockSig : 1; + uint wasDeleted : 1; + uint isDeletingChildren : 1; + uint sendChildEvents : 1; + uint receiveChildEvents : 1; + uint isWindow : 1; + uint unused : 25; + int postedEvents; + QDynamicMetaObjectData *metaObject; + QMetaObject *dynamicMetaObject() const; +}; + + +class __attribute__((visibility("default"))) QObject +{ + public: template <typename ThisObject> inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } +# 114 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" +#pragma GCC diagnostic push +# 114 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" + static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private: __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); +# 114 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" +#pragma GCC diagnostic pop +# 114 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" + struct QPrivateSignal {}; + + inline QObjectPrivate* d_func() { return reinterpret_cast<QObjectPrivate *>(qGetPtrHelper(d_ptr)); } inline const QObjectPrivate* d_func() const { return reinterpret_cast<const QObjectPrivate *>(qGetPtrHelper(d_ptr)); } friend class QObjectPrivate; + +public: + explicit QObject(QObject *parent=nullptr); + virtual ~QObject(); + + virtual bool event(QEvent *event); + virtual bool eventFilter(QObject *watched, QEvent *event); +# 140 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" + QString objectName() const; + void setObjectName(const QString &name); + + inline bool isWidgetType() const { return d_ptr->isWidget; } + inline bool isWindowType() const { return d_ptr->isWindow; } + + inline bool signalsBlocked() const noexcept { return d_ptr->blockSig; } + bool blockSignals(bool b) noexcept; + + QThread *thread() const; + void moveToThread(QThread *thread); + + int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); + void killTimer(int id); + + template<typename T> + inline T findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + return static_cast<T>(qt_qFindChild_helper(this, aName, ObjType::staticMetaObject, options)); + } + + template<typename T> + inline QList<T> findChildren(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + QList<T> list; + qt_qFindChildren_helper(this, aName, ObjType::staticMetaObject, + reinterpret_cast<QList<void *> *>(&list), options); + return list; + } + + + template<typename T> + inline QList<T> findChildren(const QRegExp &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + QList<T> list; + qt_qFindChildren_helper(this, re, ObjType::staticMetaObject, + reinterpret_cast<QList<void *> *>(&list), options); + return list; + } + + + + template<typename T> + inline QList<T> findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + QList<T> list; + qt_qFindChildren_helper(this, re, ObjType::staticMetaObject, + reinterpret_cast<QList<void *> *>(&list), options); + return list; + } + + + inline const QObjectList &children() const { return d_ptr->children; } + + void setParent(QObject *parent); + void installEventFilter(QObject *filterObj); + void removeEventFilter(QObject *obj); + + static QMetaObject::Connection connect(const QObject *sender, const char *signal, + const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection); + + static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal, + const QObject *receiver, const QMetaMethod &method, + Qt::ConnectionType type = Qt::AutoConnection); + + inline QMetaObject::Connection connect(const QObject *sender, const char *signal, + const char *member, Qt::ConnectionType type = Qt::AutoConnection) const; + + + + + + + + template <typename Func1, typename Func2> + static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + typedef QtPrivate::FunctionPointer<Func1> SignalType; + typedef QtPrivate::FunctionPointer<Func2> SlotType; + + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value), "No Q_OBJECT in the class with the signal") + ; + + + static_assert(bool(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount)), "The slot requires more arguments than the signal provides.") + ; + static_assert(bool((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value)), "Signal and slot arguments are not compatible.") + ; + static_assert(bool((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::value)), "Return type of the slot is not compatible with the return type of the signal.") + ; + + const int *types = nullptr; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes<typename SignalType::Arguments>::types(); + + return connectImpl(sender, reinterpret_cast<void **>(&signal), + receiver, reinterpret_cast<void **>(&slot), + new QtPrivate::QSlotObject<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } + + + template <typename Func1, typename Func2> + static inline typename QtPrivate::QEnableIf<int(QtPrivate::FunctionPointer<Func2>::ArgumentCount) >= 0, QMetaObject::Connection>::Type + connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot) + { + return connect(sender, signal, sender, slot, Qt::DirectConnection); + } + + + template <typename Func1, typename Func2> + static inline typename QtPrivate::QEnableIf<int(QtPrivate::FunctionPointer<Func2>::ArgumentCount) >= 0 && + !QtPrivate::FunctionPointer<Func2>::IsPointerToMemberFunction, QMetaObject::Connection>::Type + connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + typedef QtPrivate::FunctionPointer<Func1> SignalType; + typedef QtPrivate::FunctionPointer<Func2> SlotType; + + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value), "No Q_OBJECT in the class with the signal") + ; + + + static_assert(bool(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount)), "The slot requires more arguments than the signal provides.") + ; + static_assert(bool((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value)), "Signal and slot arguments are not compatible.") + ; + static_assert(bool((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::value)), "Return type of the slot is not compatible with the return type of the signal.") + ; + + const int *types = nullptr; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes<typename SignalType::Arguments>::types(); + + return connectImpl(sender, reinterpret_cast<void **>(&signal), context, nullptr, + new QtPrivate::QStaticSlotObject<Func2, + typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } + + + template <typename Func1, typename Func2> + static inline typename QtPrivate::QEnableIf<QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1, QMetaObject::Connection>::Type + connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot) + { + return connect(sender, signal, sender, slot, Qt::DirectConnection); + } + + + template <typename Func1, typename Func2> + static inline typename QtPrivate::QEnableIf<QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1, QMetaObject::Connection>::Type + connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + + typedef QtPrivate::FunctionPointer<Func1> SignalType; + const int FunctorArgumentCount = QtPrivate::ComputeFunctorArgumentCount<Func2 , typename SignalType::Arguments>::Value; + + static_assert(bool((FunctorArgumentCount >= 0)), "Signal and slot arguments are not compatible.") + ; + const int SlotArgumentCount = (FunctorArgumentCount >= 0) ? FunctorArgumentCount : 0; + typedef typename QtPrivate::FunctorReturnType<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotArgumentCount>::Value>::Value SlotReturnType; +# 333 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" + static_assert(bool((QtPrivate::AreArgumentsCompatible<SlotReturnType, typename SignalType::ReturnType>::value)), "Return type of the slot is not compatible with the return type of the signal.") + ; + + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value), "No Q_OBJECT in the class with the signal") + ; + + const int *types = nullptr; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes<typename SignalType::Arguments>::types(); + + return connectImpl(sender, reinterpret_cast<void **>(&signal), context, nullptr, + new QtPrivate::QFunctorSlotObject<Func2, SlotArgumentCount, + typename QtPrivate::List_Left<typename SignalType::Arguments, SlotArgumentCount>::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } + + + static bool disconnect(const QObject *sender, const char *signal, + const QObject *receiver, const char *member); + static bool disconnect(const QObject *sender, const QMetaMethod &signal, + const QObject *receiver, const QMetaMethod &member); + inline bool disconnect(const char *signal = nullptr, + const QObject *receiver = nullptr, const char *member = nullptr) const + { return disconnect(this, signal, receiver, member); } + inline bool disconnect(const QObject *receiver, const char *member = nullptr) const + { return disconnect(this, nullptr, receiver, member); } + static bool disconnect(const QMetaObject::Connection &); + + + + + template <typename Func1, typename Func2> + static inline bool disconnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot) + { + typedef QtPrivate::FunctionPointer<Func1> SignalType; + typedef QtPrivate::FunctionPointer<Func2> SlotType; + + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<typename SignalType::Object>::Value), "No Q_OBJECT in the class with the signal") + ; + + + static_assert(bool((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value)), "Signal and slot arguments are not compatible.") + ; + + return disconnectImpl(sender, reinterpret_cast<void **>(&signal), receiver, reinterpret_cast<void **>(&slot), + &SignalType::Object::staticMetaObject); + } + template <typename Func1> + static inline bool disconnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, + const QObject *receiver, void **zero) + { + + + + do { } while ((false) && (!zero)); + typedef QtPrivate::FunctionPointer<Func1> SignalType; + return disconnectImpl(sender, reinterpret_cast<void **>(&signal), receiver, zero, + &SignalType::Object::staticMetaObject); + } + + + + void dumpObjectTree(); + void dumpObjectInfo(); + + + bool setProperty(const char *name, const QVariant &value); + QVariant property(const char *name) const; + QList<QByteArray> dynamicPropertyNames() const; + + + + static uint registerUserData(); + void setUserData(uint id, QObjectUserData* data); + QObjectUserData* userData(uint id) const; + + +public : + void destroyed(QObject * = nullptr); + void objectNameChanged(const QString &objectName, QPrivateSignal); + +public: + inline QObject *parent() const { return d_ptr->parent; } + + inline bool inherits(const char *classname) const + { return const_cast<QObject *>(this)->qt_metacast(classname) != nullptr; } + +public : + void deleteLater(); + +protected: + QObject *sender() const; + int senderSignalIndex() const; + int receivers(const char* signal) const; + bool isSignalConnected(const QMetaMethod &signal) const; + + virtual void timerEvent(QTimerEvent *event); + virtual void childEvent(QChildEvent *event); + virtual void customEvent(QEvent *event); + + virtual void connectNotify(const QMetaMethod &signal); + virtual void disconnectNotify(const QMetaMethod &signal); + +protected: + QObject(QObjectPrivate &dd, QObject *parent = nullptr); + +protected: + QScopedPointer<QObjectData> d_ptr; + + static const QMetaObject staticQtMetaObject; + friend inline const QMetaObject *qt_getQtMetaObject() noexcept + { return &staticQtMetaObject; } + + friend struct QMetaObject; + friend struct QMetaObjectPrivate; + friend class QMetaCallEvent; + friend class QApplication; + friend class QApplicationPrivate; + friend class QCoreApplication; + friend class QCoreApplicationPrivate; + friend class QWidget; + friend class QThreadData; + +private: + QObject(const QObject &) = delete; QObject &operator=(const QObject &) = delete; + + +private: + static QMetaObject::Connection connectImpl(const QObject *sender, void **signal, + const QObject *receiver, void **slotPtr, + QtPrivate::QSlotObjectBase *slot, Qt::ConnectionType type, + const int *types, const QMetaObject *senderMetaObject); + + static bool disconnectImpl(const QObject *sender, void **signal, const QObject *receiver, void **slot, + const QMetaObject *senderMetaObject); + +}; + +inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal, + const char *amember, Qt::ConnectionType atype) const +{ return connect(asender, asignal, this, amember, atype); } + + +class __attribute__((visibility("default"))) QObjectUserData { +public: + virtual ~QObjectUserData(); +}; +# 510 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" +template <class T> +inline T qobject_cast(QObject *object) +{ + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<ObjType>::Value), "qobject_cast requires the type to have a Q_OBJECT macro") + ; + return static_cast<T>(ObjType::staticMetaObject.cast(object)); +} + +template <class T> +inline T qobject_cast(const QObject *object) +{ + typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType; + static_assert(bool(QtPrivate::HasQ_OBJECT_Macro<ObjType>::Value), "qobject_cast requires the type to have a Q_OBJECT macro") + ; + return static_cast<T>(ObjType::staticMetaObject.cast(object)); +} + + +template <class T> inline const char * qobject_interface_iid() +{ return nullptr; } +# 543 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qobject.h" +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QObject *); + + +class QSignalBlocker +{ +public: + inline explicit QSignalBlocker(QObject *o) noexcept; + inline explicit QSignalBlocker(QObject &o) noexcept; + inline ~QSignalBlocker(); + + + inline QSignalBlocker(QSignalBlocker &&other) noexcept; + inline QSignalBlocker &operator=(QSignalBlocker &&other) noexcept; + + + inline void reblock() noexcept; + inline void unblock() noexcept; +private: + QSignalBlocker(const QSignalBlocker &) = delete; QSignalBlocker &operator=(const QSignalBlocker &) = delete; + QObject * m_o; + bool m_blocked; + bool m_inhibited; +}; + +QSignalBlocker::QSignalBlocker(QObject *o) noexcept + : m_o(o), + m_blocked(o && o->blockSignals(true)), + m_inhibited(false) +{} + +QSignalBlocker::QSignalBlocker(QObject &o) noexcept + : m_o(&o), + m_blocked(o.blockSignals(true)), + m_inhibited(false) +{} + + +QSignalBlocker::QSignalBlocker(QSignalBlocker &&other) noexcept + : m_o(other.m_o), + m_blocked(other.m_blocked), + m_inhibited(other.m_inhibited) +{ + other.m_o = nullptr; +} + +QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other) noexcept +{ + if (this != &other) { + + + if (m_o != other.m_o || (!m_inhibited && other.m_inhibited)) + unblock(); + m_o = other.m_o; + m_blocked = other.m_blocked; + m_inhibited = other.m_inhibited; + + other.m_o = nullptr; + } + return *this; +} + + +QSignalBlocker::~QSignalBlocker() +{ + if (m_o && !m_inhibited) + m_o->blockSignals(m_blocked); +} + +void QSignalBlocker::reblock() noexcept +{ + if (m_o) m_o->blockSignals(true); + m_inhibited = false; +} + +void QSignalBlocker::unblock() noexcept +{ + if (m_o) m_o->blockSignals(m_blocked); + m_inhibited = true; +} + +namespace QtPrivate { + inline QObject & deref_for_methodcall(QObject &o) { return o; } + inline QObject & deref_for_methodcall(QObject *o) { return *o; } +} + + + +# 1 "../../include/QtCore/qobject.h" 2 +# 52 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 + +# 1 "../../include/QtCore/qbytearraylist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" +# 1 "../../include/QtCore/qlist.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qbytearraylist.h" 2 +# 1 "../../include/QtCore/qbytearraylist.h" 2 +# 54 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" 2 + + + + + +class QBitArray; +class QDataStream; +class QDate; +class QDateTime; +class QEasingCurve; +class QLine; +class QLineF; +class QLocale; +class QMatrix; +class QTransform; +class QStringList; +class QTime; +class QPoint; +class QPointF; +class QSize; +class QSizeF; +class QRect; +class QRectF; + +class QRegExp; + + +class QRegularExpression; + +class QTextFormat; +class QTextLength; +class QUrl; +class QVariant; +class QVariantComparisonHelper; + +template <typename T> +inline QVariant qVariantFromValue(const T &); + +template<typename T> +inline T qvariant_cast(const QVariant &); + +namespace QtPrivate { + + template <typename Derived, typename Argument, typename ReturnType> + struct ObjectInvoker + { + static ReturnType invoke(Argument a) + { + return Derived::object(a); + } + }; + + template <typename Derived, typename Argument, typename ReturnType> + struct MetaTypeInvoker + { + static ReturnType invoke(Argument a) + { + return Derived::metaType(a); + } + }; + + template <typename Derived, typename T, typename Argument, typename ReturnType, bool = IsPointerToTypeDerivedFromQObject<T>::Value> + struct TreatAsQObjectBeforeMetaType : ObjectInvoker<Derived, Argument, ReturnType> + { + }; + + template <typename Derived, typename T, typename Argument, typename ReturnType> + struct TreatAsQObjectBeforeMetaType<Derived, T, Argument, ReturnType, false> : MetaTypeInvoker<Derived, Argument, ReturnType> + { + }; + + template<typename T> struct QVariantValueHelper; +} + +class __attribute__((visibility("default"))) QVariant +{ + public: + enum Type { + Invalid = QMetaType::UnknownType, + Bool = QMetaType::Bool, + Int = QMetaType::Int, + UInt = QMetaType::UInt, + LongLong = QMetaType::LongLong, + ULongLong = QMetaType::ULongLong, + Double = QMetaType::Double, + Char = QMetaType::QChar, + Map = QMetaType::QVariantMap, + List = QMetaType::QVariantList, + String = QMetaType::QString, + StringList = QMetaType::QStringList, + ByteArray = QMetaType::QByteArray, + BitArray = QMetaType::QBitArray, + Date = QMetaType::QDate, + Time = QMetaType::QTime, + DateTime = QMetaType::QDateTime, + Url = QMetaType::QUrl, + Locale = QMetaType::QLocale, + Rect = QMetaType::QRect, + RectF = QMetaType::QRectF, + Size = QMetaType::QSize, + SizeF = QMetaType::QSizeF, + Line = QMetaType::QLine, + LineF = QMetaType::QLineF, + Point = QMetaType::QPoint, + PointF = QMetaType::QPointF, + RegExp = QMetaType::QRegExp, + RegularExpression = QMetaType::QRegularExpression, + Hash = QMetaType::QVariantHash, + EasingCurve = QMetaType::QEasingCurve, + Uuid = QMetaType::QUuid, + ModelIndex = QMetaType::QModelIndex, + PersistentModelIndex = QMetaType::QPersistentModelIndex, + LastCoreType = QMetaType::LastCoreType, + + Font = QMetaType::QFont, + Pixmap = QMetaType::QPixmap, + Brush = QMetaType::QBrush, + Color = QMetaType::QColor, + Palette = QMetaType::QPalette, + Image = QMetaType::QImage, + Polygon = QMetaType::QPolygon, + Region = QMetaType::QRegion, + Bitmap = QMetaType::QBitmap, + Cursor = QMetaType::QCursor, + KeySequence = QMetaType::QKeySequence, + Pen = QMetaType::QPen, + TextLength = QMetaType::QTextLength, + TextFormat = QMetaType::QTextFormat, + Matrix = QMetaType::QMatrix, + Transform = QMetaType::QTransform, + Matrix4x4 = QMetaType::QMatrix4x4, + Vector2D = QMetaType::QVector2D, + Vector3D = QMetaType::QVector3D, + Vector4D = QMetaType::QVector4D, + Quaternion = QMetaType::QQuaternion, + PolygonF = QMetaType::QPolygonF, + Icon = QMetaType::QIcon, + LastGuiType = QMetaType::LastGuiType, + + SizePolicy = QMetaType::QSizePolicy, + + UserType = QMetaType::User, + LastType = 0xffffffff + }; + + QVariant() noexcept : d() {} + ~QVariant(); + QVariant(Type type); + QVariant(int typeId, const void *copy); + QVariant(int typeId, const void *copy, uint flags); + QVariant(const QVariant &other); + + + QVariant(QDataStream &s); + + + QVariant(int i); + QVariant(uint ui); + QVariant(qlonglong ll); + QVariant(qulonglong ull); + QVariant(bool b); + QVariant(double d); + QVariant(float f); + + __attribute__ ((__deprecated__)) QVariant(const char *str); + + + QVariant(const QByteArray &bytearray); + QVariant(const QBitArray &bitarray); + QVariant(const QString &string); + QVariant(QLatin1String string); + QVariant(const QStringList &stringlist); + QVariant(QChar qchar); + QVariant(const QDate &date); + QVariant(const QTime &time); + QVariant(const QDateTime &datetime); + QVariant(const QList<QVariant> &list); + QVariant(const QMap<QString,QVariant> &map); + QVariant(const QHash<QString,QVariant> &hash); + + QVariant(const QSize &size); + QVariant(const QSizeF &size); + QVariant(const QPoint &pt); + QVariant(const QPointF &pt); + QVariant(const QLine &line); + QVariant(const QLineF &line); + QVariant(const QRect &rect); + QVariant(const QRectF &rect); + + QVariant(const QLocale &locale); + + QVariant(const QRegExp ®Exp); + + + + QVariant(const QRegularExpression &re); + + QVariant(const QUrl &url); + QVariant(const QEasingCurve &easing); + QVariant(const QUuid &uuid); + QVariant(const QModelIndex &modelIndex); + QVariant(const QPersistentModelIndex &modelIndex); + QVariant(const QJsonValue &jsonValue); + QVariant(const QJsonObject &jsonObject); + QVariant(const QJsonArray &jsonArray); + QVariant(const QJsonDocument &jsonDocument); + + + QVariant& operator=(const QVariant &other); + + inline QVariant(QVariant &&other) noexcept : d(other.d) + { other.d = Private(); } + inline QVariant &operator=(QVariant &&other) noexcept + { qSwap(d, other.d); return *this; } + + + inline void swap(QVariant &other) noexcept { qSwap(d, other.d); } + + Type type() const; + int userType() const; + const char *typeName() const; + + bool canConvert(int targetTypeId) const; + bool convert(int targetTypeId); + + inline bool isValid() const; + bool isNull() const; + + void clear(); + + void detach(); + inline bool isDetached() const; + + int toInt(bool *ok = nullptr) const; + uint toUInt(bool *ok = nullptr) const; + qlonglong toLongLong(bool *ok = nullptr) const; + qulonglong toULongLong(bool *ok = nullptr) const; + bool toBool() const; + double toDouble(bool *ok = nullptr) const; + float toFloat(bool *ok = nullptr) const; + qreal toReal(bool *ok = nullptr) const; + QByteArray toByteArray() const; + QBitArray toBitArray() const; + QString toString() const; + QStringList toStringList() const; + QChar toChar() const; + QDate toDate() const; + QTime toTime() const; + QDateTime toDateTime() const; + QList<QVariant> toList() const; + QMap<QString, QVariant> toMap() const; + QHash<QString, QVariant> toHash() const; + + + QPoint toPoint() const; + QPointF toPointF() const; + QRect toRect() const; + QSize toSize() const; + QSizeF toSizeF() const; + QLine toLine() const; + QLineF toLineF() const; + QRectF toRectF() const; + + QLocale toLocale() const; + + QRegExp toRegExp() const; + + + + QRegularExpression toRegularExpression() const; + + QUrl toUrl() const; + QEasingCurve toEasingCurve() const; + QUuid toUuid() const; + QModelIndex toModelIndex() const; + QPersistentModelIndex toPersistentModelIndex() const; + QJsonValue toJsonValue() const; + QJsonObject toJsonObject() const; + QJsonArray toJsonArray() const; + QJsonDocument toJsonDocument() const; + + + + void load(QDataStream &ds); + void save(QDataStream &ds) const; + + static const char *typeToName(int typeId); + static Type nameToType(const char *name); + + void *data(); + const void *constData() const; + inline const void *data() const { return constData(); } + + template<typename T> + inline void setValue(const T &value); + + template<typename T> + inline T value() const + { return qvariant_cast<T>(*this); } + + template<typename T> + static inline QVariant fromValue(const T &value) + { return qVariantFromValue(value); } + + template<typename T> + bool canConvert() const + { return canConvert(qMetaTypeId<T>()); } + + public: + + struct PrivateShared + { + inline PrivateShared(void *v) : ptr(v), ref(1) { } + void *ptr; + QAtomicInt ref; + }; + struct Private + { + inline Private() noexcept : type(Invalid), is_shared(false), is_null(true) + { data.ptr = nullptr; } + + + explicit inline Private(uint variantType) noexcept + : type(variantType), is_shared(false), is_null(false) + {} + + inline Private(const Private &other) noexcept + : data(other.data), type(other.type), + is_shared(other.is_shared), is_null(other.is_null) + {} + union Data + { + char c; + uchar uc; + short s; + signed char sc; + ushort us; + int i; + uint u; + long l; + ulong ul; + bool b; + double d; + float f; + qreal real; + qlonglong ll; + qulonglong ull; + QObject *o; + void *ptr; + PrivateShared *shared; + } data; + uint type : 30; + uint is_shared : 1; + uint is_null : 1; + }; + public: + typedef void (*f_construct)(Private *, const void *); + typedef void (*f_clear)(Private *); + typedef bool (*f_null)(const Private *); + + typedef void (*f_load)(Private *, QDataStream &); + typedef void (*f_save)(const Private *, QDataStream &); + + typedef bool (*f_compare)(const Private *, const Private *); + typedef bool (*f_convert)(const QVariant::Private *d, int t, void *, bool *); + typedef bool (*f_canConvert)(const QVariant::Private *d, int t); + typedef void (*f_debugStream)(QDebug, const QVariant &); + struct Handler { + f_construct construct; + f_clear clear; + f_null isNull; + + f_load load; + f_save save; + + f_compare compare; + f_convert convert; + f_canConvert canConvert; + f_debugStream debugStream; + }; + + + inline bool operator==(const QVariant &v) const + { return cmp(v); } + inline bool operator!=(const QVariant &v) const + { return !cmp(v); } + inline bool operator<(const QVariant &v) const + { return compare(v) < 0; } + inline bool operator<=(const QVariant &v) const + { return compare(v) <= 0; } + inline bool operator>(const QVariant &v) const + { return compare(v) > 0; } + inline bool operator>=(const QVariant &v) const + { return compare(v) >= 0; } + +protected: + friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); + + friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &); + + + + template<typename T> + friend inline T qvariant_cast(const QVariant &); + template<typename T> friend struct QtPrivate::QVariantValueHelper; +protected: + + + + Private d; + void create(int type, const void *copy); + bool cmp(const QVariant &other) const; + int compare(const QVariant &other) const; + bool convert(const int t, void *ptr) const; + +private: + + inline QVariant(void *) = delete; + + + + + + + QVariant(QMetaType::Type) = delete; + + + + + + + QVariant(Qt::GlobalColor) = delete; + QVariant(Qt::BrushStyle) = delete; + QVariant(Qt::PenStyle) = delete; + QVariant(Qt::CursorShape) = delete; + + + + +public: + typedef Private DataPtr; + inline DataPtr &data_ptr() { return d; } + inline const DataPtr &data_ptr() const { return d; } +}; + +template <typename T> +inline QVariant qVariantFromValue(const T &t) +{ + return QVariant(qMetaTypeId<T>(), &t, QTypeInfo<T>::isPointer); +} + +template <> +inline QVariant qVariantFromValue(const QVariant &t) { return t; } + +template <typename T> +inline void qVariantSetValue(QVariant &v, const T &t) +{ + + const uint type = qMetaTypeId<T>(); + QVariant::Private &d = v.data_ptr(); + if (v.isDetached() && (type == d.type || (type <= uint(QVariant::Char) && d.type <= uint(QVariant::Char)))) { + d.type = type; + d.is_null = false; + T *old = reinterpret_cast<T*>(d.is_shared ? d.data.shared->ptr : &d.data.ptr); + if (QTypeInfo<T>::isComplex) + old->~T(); + new (old) T(t); + } else { + v = QVariant(type, &t, QTypeInfo<T>::isPointer); + } +} + +template <> +inline void qVariantSetValue<QVariant>(QVariant &v, const QVariant &t) +{ + v = t; +} + +inline bool QVariant::isValid() const { return d.type != Invalid; } + +template<typename T> +inline void QVariant::setValue(const T &avalue) +{ qVariantSetValue(*this, avalue); } + + +__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant& p); +__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant& p); +__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant::Type& p); +__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant::Type p); + + +inline bool QVariant::isDetached() const +{ return !d.is_shared || d.data.shared->ref.load() == 1; } +# 557 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" +class QVariantComparisonHelper +{ +public: + inline QVariantComparisonHelper(const QVariant &var) + : v(&var) {} +private: + friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); + const QVariant *v; +}; + +inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2) +{ + return v1.cmp(*v2.v); +} + +inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2) +{ + return !operator==(v1, v2); +} + +template<> class QTypeInfo<QVariant > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QVariant)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QVariant >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QVariant) }; static inline const char *name() { return "QVariant"; } }; inline void swap(QVariant &value1, QVariant &value2) noexcept(noexcept(value1.swap(value2))) { value1.swap(value2); } + +class __attribute__((visibility("default"))) QSequentialIterable +{ + QtMetaTypePrivate::QSequentialIterableImpl m_impl; +public: + struct __attribute__((visibility("default"))) const_iterator + { + private: + QtMetaTypePrivate::QSequentialIterableImpl m_impl; + QAtomicInt *ref; + friend class QSequentialIterable; + explicit const_iterator(const QSequentialIterable &iter, QAtomicInt *ref_); + + explicit const_iterator(const QtMetaTypePrivate::QSequentialIterableImpl &impl, QAtomicInt *ref_); + + void begin(); + void end(); + public: + ~const_iterator(); + + const_iterator(const const_iterator &other); + + const_iterator& operator=(const const_iterator &other); + + const QVariant operator*() const; + bool operator==(const const_iterator &o) const; + bool operator!=(const const_iterator &o) const; + const_iterator &operator++(); + const_iterator operator++(int); + const_iterator &operator--(); + const_iterator operator--(int); + const_iterator &operator+=(int j); + const_iterator &operator-=(int j); + const_iterator operator+(int j) const; + const_iterator operator-(int j) const; + }; + + friend struct const_iterator; + + + explicit QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl impl); + + + + + const_iterator begin() const; + const_iterator end() const; + + QVariant at(int idx) const; + int size() const; + + bool canReverseIterate() const; +}; + +class __attribute__((visibility("default"))) QAssociativeIterable +{ + QtMetaTypePrivate::QAssociativeIterableImpl m_impl; +public: + struct __attribute__((visibility("default"))) const_iterator + { + private: + QtMetaTypePrivate::QAssociativeIterableImpl m_impl; + QAtomicInt *ref; + friend class QAssociativeIterable; + explicit const_iterator(const QAssociativeIterable &iter, QAtomicInt *ref_); + + explicit const_iterator(const QtMetaTypePrivate::QAssociativeIterableImpl &impl, QAtomicInt *ref_); + + void begin(); + void end(); + void find(const QVariant &key); + public: + ~const_iterator(); + const_iterator(const const_iterator &other); + + const_iterator& operator=(const const_iterator &other); + + const QVariant key() const; + + const QVariant value() const; + + const QVariant operator*() const; + bool operator==(const const_iterator &o) const; + bool operator!=(const const_iterator &o) const; + const_iterator &operator++(); + const_iterator operator++(int); + const_iterator &operator--(); + const_iterator operator--(int); + const_iterator &operator+=(int j); + const_iterator &operator-=(int j); + const_iterator operator+(int j) const; + const_iterator operator-(int j) const; + }; + + friend struct const_iterator; + + + explicit QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl impl); + + + + + const_iterator begin() const; + const_iterator end() const; + const_iterator find(const QVariant &key) const; + + QVariant value(const QVariant &key) const; + + int size() const; +}; + + +namespace QtPrivate { + template<typename T> + struct QVariantValueHelper : TreatAsQObjectBeforeMetaType<QVariantValueHelper<T>, T, const QVariant &, T> + { + static T metaType(const QVariant &v) + { + const int vid = qMetaTypeId<T>(); + if (vid == v.userType()) + return *reinterpret_cast<const T *>(v.constData()); + T t; + if (v.convert(vid, &t)) + return t; + return T(); + } + + static T object(const QVariant &v) + { + return qobject_cast<T>(QMetaType::typeFlags(v.userType()) & QMetaType::PointerToQObject + ? v.d.data.o + : QVariantValueHelper::metaType(v)); + } + + }; + + template<typename T> + struct QVariantValueHelperInterface : QVariantValueHelper<T> + { + }; + + template<> + struct QVariantValueHelperInterface<QSequentialIterable> + { + static QSequentialIterable invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QVariantList>()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast<const QVariantList*>(v.constData()))); + } + if (typeId == qMetaTypeId<QStringList>()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast<const QStringList*>(v.constData()))); + } + + if (typeId == qMetaTypeId<QByteArrayList>()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast<const QByteArrayList*>(v.constData()))); + } + + return QSequentialIterable(v.value<QtMetaTypePrivate::QSequentialIterableImpl>()); + } + }; + template<> + struct QVariantValueHelperInterface<QAssociativeIterable> + { + static QAssociativeIterable invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QVariantMap>()) { + return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast<const QVariantMap*>(v.constData()))); + } + if (typeId == qMetaTypeId<QVariantHash>()) { + return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast<const QVariantHash*>(v.constData()))); + } + return QAssociativeIterable(v.value<QtMetaTypePrivate::QAssociativeIterableImpl>()); + } + }; + template<> + struct QVariantValueHelperInterface<QVariantList> + { + static QVariantList invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QStringList>() || typeId == qMetaTypeId<QByteArrayList>() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>())) { + QSequentialIterable iter = QVariantValueHelperInterface<QSequentialIterable>::invoke(v); + QVariantList l; + l.reserve(iter.size()); + for (QSequentialIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l << *it; + return l; + } + return QVariantValueHelper<QVariantList>::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface<QVariantHash> + { + static QVariantHash invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QVariantMap>() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>())) { + QAssociativeIterable iter = QVariantValueHelperInterface<QAssociativeIterable>::invoke(v); + QVariantHash l; + l.reserve(iter.size()); + for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l.insertMulti(it.key().toString(), it.value()); + return l; + } + return QVariantValueHelper<QVariantHash>::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface<QVariantMap> + { + static QVariantMap invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QVariantHash>() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>())) { + QAssociativeIterable iter = QVariantValueHelperInterface<QAssociativeIterable>::invoke(v); + QVariantMap l; + for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l.insertMulti(it.key().toString(), it.value()); + return l; + } + return QVariantValueHelper<QVariantMap>::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface<QPair<QVariant, QVariant> > + { + static QPair<QVariant, QVariant> invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId<QPair<QVariant, QVariant> >()) + return QVariantValueHelper<QPair<QVariant, QVariant> >::invoke(v); + + if (QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>())) { + QtMetaTypePrivate::QPairVariantInterfaceImpl pi = v.value<QtMetaTypePrivate::QPairVariantInterfaceImpl>(); + + const QtMetaTypePrivate::VariantData d1 = pi.first(); + QVariant v1(d1.metaTypeId, d1.data, d1.flags); + if (d1.metaTypeId == qMetaTypeId<QVariant>()) + v1 = *reinterpret_cast<const QVariant*>(d1.data); + + const QtMetaTypePrivate::VariantData d2 = pi.second(); + QVariant v2(d2.metaTypeId, d2.data, d2.flags); + if (d2.metaTypeId == qMetaTypeId<QVariant>()) + v2 = *reinterpret_cast<const QVariant*>(d2.data); + + return QPair<QVariant, QVariant>(v1, v2); + } + return QVariantValueHelper<QPair<QVariant, QVariant> >::invoke(v); + } + }; +} + +template<typename T> inline T qvariant_cast(const QVariant &v) +{ + return QtPrivate::QVariantValueHelperInterface<T>::invoke(v); +} + +template<> inline QVariant qvariant_cast<QVariant>(const QVariant &v) +{ + if (v.userType() == QMetaType::QVariant) + return *reinterpret_cast<const QVariant *>(v.constData()); + return v; +} +# 858 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qvariant.h" +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &); +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant::Type); + + + +# 1 "../../include/QtCore/qvariant.h" 2 +# 44 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 +# 1 "../../include/QtCore/qstringlist.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" +# 1 "../../include/QtCore/qlist.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qstringlist.h" 2 +# 1 "../../include/QtCore/qstringlist.h" 2 +# 45 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 +# 1 "../../include/QtCore/qdebug.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" +# 1 "../../include/QtCore/qalgorithms.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qhash.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qmap.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qpair.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qtextstream.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" +# 1 "../../include/QtCore/qiodevice.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" 2 + +# 1 "../../include/QtCore/qobject.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" 2 + + + + +# 1 "../../include/QtCore/qstring.h" 1 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" 2 + + + + + + + + +class QByteArray; +class QIODevicePrivate; + +class __attribute__((visibility("default"))) QIODevice + + : public QObject + +{ + + public: template <typename ThisObject> inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } +# 68 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" +#pragma GCC diagnostic push +# 68 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" + static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private: __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); +# 68 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" +#pragma GCC diagnostic pop +# 68 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qiodevice.h" + struct QPrivateSignal {}; + +public: + enum OpenModeFlag { + NotOpen = 0x0000, + ReadOnly = 0x0001, + WriteOnly = 0x0002, + ReadWrite = ReadOnly | WriteOnly, + Append = 0x0004, + Truncate = 0x0008, + Text = 0x0010, + Unbuffered = 0x0020 + }; + typedef QFlags<OpenModeFlag> OpenMode; + + QIODevice(); + + explicit QIODevice(QObject *parent); + + virtual ~QIODevice(); + + OpenMode openMode() const; + + void setTextModeEnabled(bool enabled); + bool isTextModeEnabled() const; + + bool isOpen() const; + bool isReadable() const; + bool isWritable() const; + virtual bool isSequential() const; + + int readChannelCount() const; + int writeChannelCount() const; + int currentReadChannel() const; + void setCurrentReadChannel(int channel); + int currentWriteChannel() const; + void setCurrentWriteChannel(int channel); + + virtual bool open(OpenMode mode); + virtual void close(); + + + + virtual qint64 pos() const; + virtual qint64 size() const; + virtual bool seek(qint64 pos); + virtual bool atEnd() const; + virtual bool reset(); + + virtual qint64 bytesAvailable() const; + virtual qint64 bytesToWrite() const; + + qint64 read(char *data, qint64 maxlen); + QByteArray read(qint64 maxlen); + QByteArray readAll(); + qint64 readLine(char *data, qint64 maxlen); + QByteArray readLine(qint64 maxlen = 0); + virtual bool canReadLine() const; + + void startTransaction(); + void commitTransaction(); + void rollbackTransaction(); + bool isTransactionStarted() const; + + qint64 write(const char *data, qint64 len); + qint64 write(const char *data); + inline qint64 write(const QByteArray &data) + { return write(data.constData(), data.size()); } + + qint64 peek(char *data, qint64 maxlen); + QByteArray peek(qint64 maxlen); + + virtual bool waitForReadyRead(int msecs); + virtual bool waitForBytesWritten(int msecs); + + void ungetChar(char c); + bool putChar(char c); + bool getChar(char *c); + + QString errorString() const; + + +public : + void readyRead(); + void channelReadyRead(int channel); + void bytesWritten(qint64 bytes); + void channelBytesWritten(int channel, qint64 bytes); + void aboutToClose(); + void readChannelFinished(); + + +protected: + + + + QIODevice(QIODevicePrivate &dd, QObject *parent = nullptr); + + virtual qint64 readData(char *data, qint64 maxlen) = 0; + virtual qint64 readLineData(char *data, qint64 maxlen); + virtual qint64 writeData(const char *data, qint64 len) = 0; + + void setOpenMode(OpenMode openMode); + + void setErrorString(const QString &errorString); + + + + + +private: + inline QIODevicePrivate* d_func() { return reinterpret_cast<QIODevicePrivate *>(qGetPtrHelper(d_ptr)); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast<const QIODevicePrivate *>(qGetPtrHelper(d_ptr)); } friend class QIODevicePrivate; + QIODevice(const QIODevice &) = delete; QIODevice &operator=(const QIODevice &) = delete; +}; + +constexpr inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) noexcept { return QFlags<QIODevice::OpenMode::enum_type>(f1) | f2; } constexpr inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QFlags<QIODevice::OpenMode::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QIODevice::OpenMode::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + + +class QDebug; +__attribute__((visibility("default"))) QDebug operator<<(QDebug debug, QIODevice::OpenMode modes); + + + +# 1 "../../include/QtCore/qiodevice.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 2 +# 1 "../../include/QtCore/qchar.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 2 +# 1 "../../include/QtCore/qlocale.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" +# 1 "../../include/QtCore/qvariant.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" 2 +# 1 "../../include/QtCore/qobjectdefs.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" 2 +# 1 "../../include/QtCore/qshareddata.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" 2 +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" 2 + +# 1 "../../include/QtCore/qhash.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" 2 + +# 1 "../../include/QtCore/qhashfunctions.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qshareddata.h" 2 + + + + +template <class T> class QSharedDataPointer; + +class __attribute__((visibility("default"))) QSharedData +{ +public: + mutable QAtomicInt ref; + + inline QSharedData() : ref(0) { } + inline QSharedData(const QSharedData &) : ref(0) { } + +private: + + QSharedData &operator=(const QSharedData &); +}; + +template <class T> class QSharedDataPointer +{ +public: + typedef T Type; + typedef T *pointer; + + inline void detach() { if (d && d->ref.load() != 1) detach_helper(); } + inline T &operator*() { detach(); return *d; } + inline const T &operator*() const { return *d; } + inline T *operator->() { detach(); return d; } + inline const T *operator->() const { return d; } + inline operator T *() { detach(); return d; } + inline operator const T *() const { return d; } + inline T *data() { detach(); return d; } + inline const T *data() const { return d; } + inline const T *constData() const { return d; } + + inline bool operator==(const QSharedDataPointer<T> &other) const { return d == other.d; } + inline bool operator!=(const QSharedDataPointer<T> &other) const { return d != other.d; } + + inline QSharedDataPointer() { d = nullptr; } + inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; } + + explicit QSharedDataPointer(T *data) noexcept; + inline QSharedDataPointer(const QSharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); } + inline QSharedDataPointer<T> & operator=(const QSharedDataPointer<T> &o) { + if (o.d != d) { + if (o.d) + o.d->ref.ref(); + T *old = d; + d = o.d; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + inline QSharedDataPointer &operator=(T *o) { + if (o != d) { + if (o) + o->ref.ref(); + T *old = d; + d = o; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + + QSharedDataPointer(QSharedDataPointer &&o) noexcept : d(o.d) { o.d = nullptr; } + inline QSharedDataPointer<T> &operator=(QSharedDataPointer<T> &&other) noexcept + { qSwap(d, other.d); return *this; } + + + inline bool operator!() const { return !d; } + + inline void swap(QSharedDataPointer &other) noexcept + { qSwap(d, other.d); } + +protected: + T *clone(); + +private: + void detach_helper(); + + T *d; +}; + +template <class T> class QExplicitlySharedDataPointer +{ +public: + typedef T Type; + typedef T *pointer; + + inline T &operator*() const { return *d; } + inline T *operator->() { return d; } + inline T *operator->() const { return d; } + inline T *data() const { return d; } + inline const T *constData() const { return d; } + + inline void detach() { if (d && d->ref.load() != 1) detach_helper(); } + + inline void reset() + { + if(d && !d->ref.deref()) + delete d; + + d = nullptr; + } + + inline operator bool () const { return d != nullptr; } + + inline bool operator==(const QExplicitlySharedDataPointer<T> &other) const { return d == other.d; } + inline bool operator!=(const QExplicitlySharedDataPointer<T> &other) const { return d != other.d; } + inline bool operator==(const T *ptr) const { return d == ptr; } + inline bool operator!=(const T *ptr) const { return d != ptr; } + + inline QExplicitlySharedDataPointer() { d = nullptr; } + inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; } + + explicit QExplicitlySharedDataPointer(T *data) noexcept; + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); } + + template<class X> + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X> &o) + + + + : d(o.data()) + + { + if(d) + d->ref.ref(); + } + + inline QExplicitlySharedDataPointer<T> & operator=(const QExplicitlySharedDataPointer<T> &o) { + if (o.d != d) { + if (o.d) + o.d->ref.ref(); + T *old = d; + d = o.d; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + inline QExplicitlySharedDataPointer &operator=(T *o) { + if (o != d) { + if (o) + o->ref.ref(); + T *old = d; + d = o; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + + inline QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) noexcept : d(o.d) { o.d = nullptr; } + inline QExplicitlySharedDataPointer<T> &operator=(QExplicitlySharedDataPointer<T> &&other) noexcept + { qSwap(d, other.d); return *this; } + + + inline bool operator!() const { return !d; } + + inline void swap(QExplicitlySharedDataPointer &other) noexcept + { qSwap(d, other.d); } + +protected: + T *clone(); + +private: + void detach_helper(); + + T *d; +}; + +template <class T> +inline QSharedDataPointer<T>::QSharedDataPointer(T *adata) noexcept + : d(adata) +{ if (d) d->ref.ref(); } + +template <class T> +inline T *QSharedDataPointer<T>::clone() +{ + return new T(*d); +} + +template <class T> + void QSharedDataPointer<T>::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template <class T> +inline T *QExplicitlySharedDataPointer<T>::clone() +{ + return new T(*d); +} + +template <class T> + void QExplicitlySharedDataPointer<T>::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template <class T> +inline QExplicitlySharedDataPointer<T>::QExplicitlySharedDataPointer(T *adata) noexcept + : d(adata) +{ if (d) d->ref.ref(); } + +template <class T> +inline void qSwap(QSharedDataPointer<T> &p1, QSharedDataPointer<T> &p2) +{ p1.swap(p2); } + +template <class T> +inline void qSwap(QExplicitlySharedDataPointer<T> &p1, QExplicitlySharedDataPointer<T> &p2) +{ p1.swap(p2); } + + +namespace std { + template <class T> + inline void swap(::QSharedDataPointer<T> &p1, ::QSharedDataPointer<T> &p2) + { p1.swap(p2); } + + template <class T> + inline void swap(::QExplicitlySharedDataPointer<T> &p1, ::QExplicitlySharedDataPointer<T> &p2) + { p1.swap(p2); } +} + + +template <class T> +inline uint qHash(const QSharedDataPointer<T> &ptr, uint seed = 0) noexcept +{ + return qHash(ptr.data(), seed); +} +template <class T> +inline uint qHash(const QExplicitlySharedDataPointer<T> &ptr, uint seed = 0) noexcept +{ + return qHash(ptr.data(), seed); +} + +template<typename T> class QTypeInfo<QSharedDataPointer<T> > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QSharedDataPointer<T>)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QSharedDataPointer<T> >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QSharedDataPointer<T>) }; static inline const char *name() { return "QSharedDataPointer<T>"; } }; +template<typename T> class QTypeInfo<QExplicitlySharedDataPointer<T> > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QExplicitlySharedDataPointer<T>)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QExplicitlySharedDataPointer<T> >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QExplicitlySharedDataPointer<T>) }; static inline const char *name() { return "QExplicitlySharedDataPointer<T>"; } }; + + +# 1 "../../include/QtCore/qshareddata.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" 2 + + + + +class QDataStream; +class QDate; +class QDateTime; +class QLocale; +class QTime; +class QVariant; +class QTextStream; +class QTextStreamPrivate; + +class QLocalePrivate; + +__attribute__((visibility("default"))) uint qHash(const QLocale &key, uint seed = 0) noexcept; + +class __attribute__((visibility("default"))) QLocale +{ + public: static const QMetaObject staticMetaObject; void qt_check_for_QGADGET_macro(); typedef void QtGadgetHelper; private: +# 66 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" +#pragma GCC diagnostic push +# 66 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" + __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); +# 66 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" +#pragma GCC diagnostic pop +# 66 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qlocale.h" + + friend class QString; + friend class QStringRef; + friend class QByteArray; + friend class QIntValidator; + friend class QDoubleValidatorPrivate; + friend class QTextStream; + friend class QTextStreamPrivate; + +public: + + + enum Language { + AnyLanguage = 0, + C = 1, + Abkhazian = 2, + Oromo = 3, + Afar = 4, + Afrikaans = 5, + Albanian = 6, + Amharic = 7, + Arabic = 8, + Armenian = 9, + Assamese = 10, + Aymara = 11, + Azerbaijani = 12, + Bashkir = 13, + Basque = 14, + Bengali = 15, + Dzongkha = 16, + Bihari = 17, + Bislama = 18, + Breton = 19, + Bulgarian = 20, + Burmese = 21, + Belarusian = 22, + Khmer = 23, + Catalan = 24, + Chinese = 25, + Corsican = 26, + Croatian = 27, + Czech = 28, + Danish = 29, + Dutch = 30, + English = 31, + Esperanto = 32, + Estonian = 33, + Faroese = 34, + Fijian = 35, + Finnish = 36, + French = 37, + WesternFrisian = 38, + Gaelic = 39, + Galician = 40, + Georgian = 41, + German = 42, + Greek = 43, + Greenlandic = 44, + Guarani = 45, + Gujarati = 46, + Hausa = 47, + Hebrew = 48, + Hindi = 49, + Hungarian = 50, + Icelandic = 51, + Indonesian = 52, + Interlingua = 53, + Interlingue = 54, + Inuktitut = 55, + Inupiak = 56, + Irish = 57, + Italian = 58, + Japanese = 59, + Javanese = 60, + Kannada = 61, + Kashmiri = 62, + Kazakh = 63, + Kinyarwanda = 64, + Kirghiz = 65, + Korean = 66, + Kurdish = 67, + Rundi = 68, + Lao = 69, + Latin = 70, + Latvian = 71, + Lingala = 72, + Lithuanian = 73, + Macedonian = 74, + Malagasy = 75, + Malay = 76, + Malayalam = 77, + Maltese = 78, + Maori = 79, + Marathi = 80, + Marshallese = 81, + Mongolian = 82, + NauruLanguage = 83, + Nepali = 84, + NorwegianBokmal = 85, + Occitan = 86, + Oriya = 87, + Pashto = 88, + Persian = 89, + Polish = 90, + Portuguese = 91, + Punjabi = 92, + Quechua = 93, + Romansh = 94, + Romanian = 95, + Russian = 96, + Samoan = 97, + Sango = 98, + Sanskrit = 99, + Serbian = 100, + Ossetic = 101, + SouthernSotho = 102, + Tswana = 103, + Shona = 104, + Sindhi = 105, + Sinhala = 106, + Swati = 107, + Slovak = 108, + Slovenian = 109, + Somali = 110, + Spanish = 111, + Sundanese = 112, + Swahili = 113, + Swedish = 114, + Sardinian = 115, + Tajik = 116, + Tamil = 117, + Tatar = 118, + Telugu = 119, + Thai = 120, + Tibetan = 121, + Tigrinya = 122, + Tongan = 123, + Tsonga = 124, + Turkish = 125, + Turkmen = 126, + Tahitian = 127, + Uighur = 128, + Ukrainian = 129, + Urdu = 130, + Uzbek = 131, + Vietnamese = 132, + Volapuk = 133, + Welsh = 134, + Wolof = 135, + Xhosa = 136, + Yiddish = 137, + Yoruba = 138, + Zhuang = 139, + Zulu = 140, + NorwegianNynorsk = 141, + Bosnian = 142, + Divehi = 143, + Manx = 144, + Cornish = 145, + Akan = 146, + Konkani = 147, + Ga = 148, + Igbo = 149, + Kamba = 150, + Syriac = 151, + Blin = 152, + Geez = 153, + Koro = 154, + Sidamo = 155, + Atsam = 156, + Tigre = 157, + Jju = 158, + Friulian = 159, + Venda = 160, + Ewe = 161, + Walamo = 162, + Hawaiian = 163, + Tyap = 164, + Nyanja = 165, + Filipino = 166, + SwissGerman = 167, + SichuanYi = 168, + Kpelle = 169, + LowGerman = 170, + SouthNdebele = 171, + NorthernSotho = 172, + NorthernSami = 173, + Taroko = 174, + Gusii = 175, + Taita = 176, + Fulah = 177, + Kikuyu = 178, + Samburu = 179, + Sena = 180, + NorthNdebele = 181, + Rombo = 182, + Tachelhit = 183, + Kabyle = 184, + Nyankole = 185, + Bena = 186, + Vunjo = 187, + Bambara = 188, + Embu = 189, + Cherokee = 190, + Morisyen = 191, + Makonde = 192, + Langi = 193, + Ganda = 194, + Bemba = 195, + Kabuverdianu = 196, + Meru = 197, + Kalenjin = 198, + Nama = 199, + Machame = 200, + Colognian = 201, + Masai = 202, + Soga = 203, + Luyia = 204, + Asu = 205, + Teso = 206, + Saho = 207, + KoyraChiini = 208, + Rwa = 209, + Luo = 210, + Chiga = 211, + CentralMoroccoTamazight = 212, + KoyraboroSenni = 213, + Shambala = 214, + Bodo = 215, + Avaric = 216, + Chamorro = 217, + Chechen = 218, + Church = 219, + Chuvash = 220, + Cree = 221, + Haitian = 222, + Herero = 223, + HiriMotu = 224, + Kanuri = 225, + Komi = 226, + Kongo = 227, + Kwanyama = 228, + Limburgish = 229, + LubaKatanga = 230, + Luxembourgish = 231, + Navaho = 232, + Ndonga = 233, + Ojibwa = 234, + Pali = 235, + Walloon = 236, + Aghem = 237, + Basaa = 238, + Zarma = 239, + Duala = 240, + JolaFonyi = 241, + Ewondo = 242, + Bafia = 243, + MakhuwaMeetto = 244, + Mundang = 245, + Kwasio = 246, + Nuer = 247, + Sakha = 248, + Sangu = 249, + CongoSwahili = 250, + Tasawaq = 251, + Vai = 252, + Walser = 253, + Yangben = 254, + Avestan = 255, + Asturian = 256, + Ngomba = 257, + Kako = 258, + Meta = 259, + Ngiemboon = 260, + Aragonese = 261, + Akkadian = 262, + AncientEgyptian = 263, + AncientGreek = 264, + Aramaic = 265, + Balinese = 266, + Bamun = 267, + BatakToba = 268, + Buginese = 269, + Buhid = 270, + Carian = 271, + Chakma = 272, + ClassicalMandaic = 273, + Coptic = 274, + Dogri = 275, + EasternCham = 276, + EasternKayah = 277, + Etruscan = 278, + Gothic = 279, + Hanunoo = 280, + Ingush = 281, + LargeFloweryMiao = 282, + Lepcha = 283, + Limbu = 284, + Lisu = 285, + Lu = 286, + Lycian = 287, + Lydian = 288, + Mandingo = 289, + Manipuri = 290, + Meroitic = 291, + NorthernThai = 292, + OldIrish = 293, + OldNorse = 294, + OldPersian = 295, + OldTurkish = 296, + Pahlavi = 297, + Parthian = 298, + Phoenician = 299, + PrakritLanguage = 300, + Rejang = 301, + Sabaean = 302, + Samaritan = 303, + Santali = 304, + Saurashtra = 305, + Sora = 306, + Sylheti = 307, + Tagbanwa = 308, + TaiDam = 309, + TaiNua = 310, + Ugaritic = 311, + Akoose = 312, + Lakota = 313, + StandardMoroccanTamazight = 314, + Mapuche = 315, + CentralKurdish = 316, + LowerSorbian = 317, + UpperSorbian = 318, + Kenyang = 319, + Mohawk = 320, + Nko = 321, + Prussian = 322, + Kiche = 323, + SouthernSami = 324, + LuleSami = 325, + InariSami = 326, + SkoltSami = 327, + Warlpiri = 328, + ManichaeanMiddlePersian = 329, + Mende = 330, + AncientNorthArabian = 331, + LinearA = 332, + HmongNjua = 333, + Ho = 334, + Lezghian = 335, + Bassa = 336, + Mono = 337, + TedimChin = 338, + Maithili = 339, + Ahom = 340, + AmericanSignLanguage = 341, + ArdhamagadhiPrakrit = 342, + Bhojpuri = 343, + HieroglyphicLuwian = 344, + LiteraryChinese = 345, + Mazanderani = 346, + Mru = 347, + Newari = 348, + NorthernLuri = 349, + Palauan = 350, + Papiamento = 351, + Saraiki = 352, + TokelauLanguage = 353, + TokPisin = 354, + TuvaluLanguage = 355, + UncodedLanguages = 356, + Cantonese = 357, + Osage = 358, + Tangut = 359, + + Norwegian = NorwegianBokmal, + Moldavian = Romanian, + SerboCroatian = Serbian, + Tagalog = Filipino, + Twi = Akan, + Afan = Oromo, + Byelorussian = Belarusian, + Bhutani = Dzongkha, + Cambodian = Khmer, + Kurundi = Rundi, + RhaetoRomance = Romansh, + Chewa = Nyanja, + Frisian = WesternFrisian, + Uigur = Uighur, + + LastLanguage = Tangut + }; + + enum Script { + AnyScript = 0, + ArabicScript = 1, + CyrillicScript = 2, + DeseretScript = 3, + GurmukhiScript = 4, + SimplifiedHanScript = 5, + TraditionalHanScript = 6, + LatinScript = 7, + MongolianScript = 8, + TifinaghScript = 9, + ArmenianScript = 10, + BengaliScript = 11, + CherokeeScript = 12, + DevanagariScript = 13, + EthiopicScript = 14, + GeorgianScript = 15, + GreekScript = 16, + GujaratiScript = 17, + HebrewScript = 18, + JapaneseScript = 19, + KhmerScript = 20, + KannadaScript = 21, + KoreanScript = 22, + LaoScript = 23, + MalayalamScript = 24, + MyanmarScript = 25, + OriyaScript = 26, + TamilScript = 27, + TeluguScript = 28, + ThaanaScript = 29, + ThaiScript = 30, + TibetanScript = 31, + SinhalaScript = 32, + SyriacScript = 33, + YiScript = 34, + VaiScript = 35, + AvestanScript = 36, + BalineseScript = 37, + BamumScript = 38, + BatakScript = 39, + BopomofoScript = 40, + BrahmiScript = 41, + BugineseScript = 42, + BuhidScript = 43, + CanadianAboriginalScript = 44, + CarianScript = 45, + ChakmaScript = 46, + ChamScript = 47, + CopticScript = 48, + CypriotScript = 49, + EgyptianHieroglyphsScript = 50, + FraserScript = 51, + GlagoliticScript = 52, + GothicScript = 53, + HanScript = 54, + HangulScript = 55, + HanunooScript = 56, + ImperialAramaicScript = 57, + InscriptionalPahlaviScript = 58, + InscriptionalParthianScript = 59, + JavaneseScript = 60, + KaithiScript = 61, + KatakanaScript = 62, + KayahLiScript = 63, + KharoshthiScript = 64, + LannaScript = 65, + LepchaScript = 66, + LimbuScript = 67, + LinearBScript = 68, + LycianScript = 69, + LydianScript = 70, + MandaeanScript = 71, + MeiteiMayekScript = 72, + MeroiticScript = 73, + MeroiticCursiveScript = 74, + NkoScript = 75, + NewTaiLueScript = 76, + OghamScript = 77, + OlChikiScript = 78, + OldItalicScript = 79, + OldPersianScript = 80, + OldSouthArabianScript = 81, + OrkhonScript = 82, + OsmanyaScript = 83, + PhagsPaScript = 84, + PhoenicianScript = 85, + PollardPhoneticScript = 86, + RejangScript = 87, + RunicScript = 88, + SamaritanScript = 89, + SaurashtraScript = 90, + SharadaScript = 91, + ShavianScript = 92, + SoraSompengScript = 93, + CuneiformScript = 94, + SundaneseScript = 95, + SylotiNagriScript = 96, + TagalogScript = 97, + TagbanwaScript = 98, + TaiLeScript = 99, + TaiVietScript = 100, + TakriScript = 101, + UgariticScript = 102, + BrailleScript = 103, + HiraganaScript = 104, + CaucasianAlbanianScript = 105, + BassaVahScript = 106, + DuployanScript = 107, + ElbasanScript = 108, + GranthaScript = 109, + PahawhHmongScript = 110, + KhojkiScript = 111, + LinearAScript = 112, + MahajaniScript = 113, + ManichaeanScript = 114, + MendeKikakuiScript = 115, + ModiScript = 116, + MroScript = 117, + OldNorthArabianScript = 118, + NabataeanScript = 119, + PalmyreneScript = 120, + PauCinHauScript = 121, + OldPermicScript = 122, + PsalterPahlaviScript = 123, + SiddhamScript = 124, + KhudawadiScript = 125, + TirhutaScript = 126, + VarangKshitiScript = 127, + AhomScript = 128, + AnatolianHieroglyphsScript = 129, + HatranScript = 130, + MultaniScript = 131, + OldHungarianScript = 132, + SignWritingScript = 133, + AdlamScript = 134, + BhaiksukiScript = 135, + MarchenScript = 136, + NewaScript = 137, + OsageScript = 138, + TangutScript = 139, + HanWithBopomofoScript = 140, + JamoScript = 141, + + SimplifiedChineseScript = SimplifiedHanScript, + TraditionalChineseScript = TraditionalHanScript, + + LastScript = JamoScript + }; + enum Country { + AnyCountry = 0, + Afghanistan = 1, + Albania = 2, + Algeria = 3, + AmericanSamoa = 4, + Andorra = 5, + Angola = 6, + Anguilla = 7, + Antarctica = 8, + AntiguaAndBarbuda = 9, + Argentina = 10, + Armenia = 11, + Aruba = 12, + Australia = 13, + Austria = 14, + Azerbaijan = 15, + Bahamas = 16, + Bahrain = 17, + Bangladesh = 18, + Barbados = 19, + Belarus = 20, + Belgium = 21, + Belize = 22, + Benin = 23, + Bermuda = 24, + Bhutan = 25, + Bolivia = 26, + BosniaAndHerzegowina = 27, + Botswana = 28, + BouvetIsland = 29, + Brazil = 30, + BritishIndianOceanTerritory = 31, + Brunei = 32, + Bulgaria = 33, + BurkinaFaso = 34, + Burundi = 35, + Cambodia = 36, + Cameroon = 37, + Canada = 38, + CapeVerde = 39, + CaymanIslands = 40, + CentralAfricanRepublic = 41, + Chad = 42, + Chile = 43, + China = 44, + ChristmasIsland = 45, + CocosIslands = 46, + Colombia = 47, + Comoros = 48, + CongoKinshasa = 49, + CongoBrazzaville = 50, + CookIslands = 51, + CostaRica = 52, + IvoryCoast = 53, + Croatia = 54, + Cuba = 55, + Cyprus = 56, + CzechRepublic = 57, + Denmark = 58, + Djibouti = 59, + Dominica = 60, + DominicanRepublic = 61, + EastTimor = 62, + Ecuador = 63, + Egypt = 64, + ElSalvador = 65, + EquatorialGuinea = 66, + Eritrea = 67, + Estonia = 68, + Ethiopia = 69, + FalklandIslands = 70, + FaroeIslands = 71, + Fiji = 72, + Finland = 73, + France = 74, + Guernsey = 75, + FrenchGuiana = 76, + FrenchPolynesia = 77, + FrenchSouthernTerritories = 78, + Gabon = 79, + Gambia = 80, + Georgia = 81, + Germany = 82, + Ghana = 83, + Gibraltar = 84, + Greece = 85, + Greenland = 86, + Grenada = 87, + Guadeloupe = 88, + Guam = 89, + Guatemala = 90, + Guinea = 91, + GuineaBissau = 92, + Guyana = 93, + Haiti = 94, + HeardAndMcDonaldIslands = 95, + Honduras = 96, + HongKong = 97, + Hungary = 98, + Iceland = 99, + India = 100, + Indonesia = 101, + Iran = 102, + Iraq = 103, + Ireland = 104, + Israel = 105, + Italy = 106, + Jamaica = 107, + Japan = 108, + Jordan = 109, + Kazakhstan = 110, + Kenya = 111, + Kiribati = 112, + NorthKorea = 113, + SouthKorea = 114, + Kuwait = 115, + Kyrgyzstan = 116, + Laos = 117, + Latvia = 118, + Lebanon = 119, + Lesotho = 120, + Liberia = 121, + Libya = 122, + Liechtenstein = 123, + Lithuania = 124, + Luxembourg = 125, + Macau = 126, + Macedonia = 127, + Madagascar = 128, + Malawi = 129, + Malaysia = 130, + Maldives = 131, + Mali = 132, + Malta = 133, + MarshallIslands = 134, + Martinique = 135, + Mauritania = 136, + Mauritius = 137, + Mayotte = 138, + Mexico = 139, + Micronesia = 140, + Moldova = 141, + Monaco = 142, + Mongolia = 143, + Montserrat = 144, + Morocco = 145, + Mozambique = 146, + Myanmar = 147, + Namibia = 148, + NauruCountry = 149, + Nepal = 150, + Netherlands = 151, + CuraSao = 152, + NewCaledonia = 153, + NewZealand = 154, + Nicaragua = 155, + Niger = 156, + Nigeria = 157, + Niue = 158, + NorfolkIsland = 159, + NorthernMarianaIslands = 160, + Norway = 161, + Oman = 162, + Pakistan = 163, + Palau = 164, + PalestinianTerritories = 165, + Panama = 166, + PapuaNewGuinea = 167, + Paraguay = 168, + Peru = 169, + Philippines = 170, + Pitcairn = 171, + Poland = 172, + Portugal = 173, + PuertoRico = 174, + Qatar = 175, + Reunion = 176, + Romania = 177, + Russia = 178, + Rwanda = 179, + SaintKittsAndNevis = 180, + SaintLucia = 181, + SaintVincentAndTheGrenadines = 182, + Samoa = 183, + SanMarino = 184, + SaoTomeAndPrincipe = 185, + SaudiArabia = 186, + Senegal = 187, + Seychelles = 188, + SierraLeone = 189, + Singapore = 190, + Slovakia = 191, + Slovenia = 192, + SolomonIslands = 193, + Somalia = 194, + SouthAfrica = 195, + SouthGeorgiaAndTheSouthSandwichIslands = 196, + Spain = 197, + SriLanka = 198, + SaintHelena = 199, + SaintPierreAndMiquelon = 200, + Sudan = 201, + Suriname = 202, + SvalbardAndJanMayenIslands = 203, + Swaziland = 204, + Sweden = 205, + Switzerland = 206, + Syria = 207, + Taiwan = 208, + Tajikistan = 209, + Tanzania = 210, + Thailand = 211, + Togo = 212, + TokelauCountry = 213, + Tonga = 214, + TrinidadAndTobago = 215, + Tunisia = 216, + Turkey = 217, + Turkmenistan = 218, + TurksAndCaicosIslands = 219, + TuvaluCountry = 220, + Uganda = 221, + Ukraine = 222, + UnitedArabEmirates = 223, + UnitedKingdom = 224, + UnitedStates = 225, + UnitedStatesMinorOutlyingIslands = 226, + Uruguay = 227, + Uzbekistan = 228, + Vanuatu = 229, + VaticanCityState = 230, + Venezuela = 231, + Vietnam = 232, + BritishVirginIslands = 233, + UnitedStatesVirginIslands = 234, + WallisAndFutunaIslands = 235, + WesternSahara = 236, + Yemen = 237, + CanaryIslands = 238, + Zambia = 239, + Zimbabwe = 240, + ClippertonIsland = 241, + Montenegro = 242, + Serbia = 243, + SaintBarthelemy = 244, + SaintMartin = 245, + LatinAmericaAndTheCaribbean = 246, + AscensionIsland = 247, + AlandIslands = 248, + DiegoGarcia = 249, + CeutaAndMelilla = 250, + IsleOfMan = 251, + Jersey = 252, + TristanDaCunha = 253, + SouthSudan = 254, + Bonaire = 255, + SintMaarten = 256, + Kosovo = 257, + EuropeanUnion = 258, + OutlyingOceania = 259, + + Tokelau = TokelauCountry, + Tuvalu = TuvaluCountry, + DemocraticRepublicOfCongo = CongoKinshasa, + PeoplesRepublicOfCongo = CongoBrazzaville, + DemocraticRepublicOfKorea = NorthKorea, + RepublicOfKorea = SouthKorea, + RussianFederation = Russia, + SyrianArabRepublic = Syria, + + LastCountry = OutlyingOceania + }; + + + friend constexpr const QMetaObject *qt_getEnumMetaObject(Language) noexcept { return &staticMetaObject; } friend constexpr const char *qt_getEnumName(Language) noexcept { return "Language"; } + friend constexpr const QMetaObject *qt_getEnumMetaObject(Country) noexcept { return &staticMetaObject; } friend constexpr const char *qt_getEnumName(Country) noexcept { return "Country"; } + friend constexpr const QMetaObject *qt_getEnumMetaObject(Script) noexcept { return &staticMetaObject; } friend constexpr const char *qt_getEnumName(Script) noexcept { return "Script"; } + + enum MeasurementSystem { + MetricSystem, + ImperialUSSystem, + ImperialUKSystem, + ImperialSystem = ImperialUSSystem + }; + friend constexpr const QMetaObject *qt_getEnumMetaObject(MeasurementSystem) noexcept { return &staticMetaObject; } friend constexpr const char *qt_getEnumName(MeasurementSystem) noexcept { return "MeasurementSystem"; } + + enum FormatType { LongFormat, ShortFormat, NarrowFormat }; + enum NumberOption { + DefaultNumberOptions = 0x0, + OmitGroupSeparator = 0x01, + RejectGroupSeparator = 0x02, + OmitLeadingZeroInExponent = 0x04, + RejectLeadingZeroInExponent = 0x08 + }; + typedef QFlags<NumberOption> NumberOptions; + + enum FloatingPointPrecisionOption { + FloatingPointShortest = -128 + }; + + enum CurrencySymbolFormat { + CurrencyIsoCode, + CurrencySymbol, + CurrencyDisplayName + }; + + QLocale(); + QLocale(const QString &name); + QLocale(Language language, Country country = AnyCountry); + QLocale(Language language, Script script, Country country); + QLocale(const QLocale &other); + + QLocale &operator=(QLocale &&other) noexcept { swap(other); return *this; } + + QLocale &operator=(const QLocale &other); + ~QLocale(); + + void swap(QLocale &other) noexcept { qSwap(d, other.d); } + + Language language() const; + Script script() const; + Country country() const; + QString name() const; + + QString bcp47Name() const; + QString nativeLanguageName() const; + QString nativeCountryName() const; + + short toShort(const QString &s, bool *ok = nullptr) const; + ushort toUShort(const QString &s, bool *ok = nullptr) const; + int toInt(const QString &s, bool *ok = nullptr) const; + uint toUInt(const QString &s, bool *ok = nullptr) const; + qlonglong toLongLong(const QString &s, bool *ok = nullptr) const; + qulonglong toULongLong(const QString &s, bool *ok = nullptr) const; + float toFloat(const QString &s, bool *ok = nullptr) const; + double toDouble(const QString &s, bool *ok = nullptr) const; + + short toShort(const QStringRef &s, bool *ok = nullptr) const; + ushort toUShort(const QStringRef &s, bool *ok = nullptr) const; + int toInt(const QStringRef &s, bool *ok = nullptr) const; + uint toUInt(const QStringRef &s, bool *ok = nullptr) const; + qlonglong toLongLong(const QStringRef &s, bool *ok = nullptr) const; + qulonglong toULongLong(const QStringRef &s, bool *ok = nullptr) const; + float toFloat(const QStringRef &s, bool *ok = nullptr) const; + double toDouble(const QStringRef &s, bool *ok = nullptr) const; + + QString toString(qlonglong i) const; + QString toString(qulonglong i) const; + inline QString toString(short i) const; + inline QString toString(ushort i) const; + inline QString toString(int i) const; + inline QString toString(uint i) const; + QString toString(double i, char f = 'g', int prec = 6) const; + inline QString toString(float i, char f = 'g', int prec = 6) const; + QString toString(const QDate &date, const QString &formatStr) const; + QString toString(const QDate &date, FormatType format = LongFormat) const; + QString toString(const QTime &time, const QString &formatStr) const; + QString toString(const QTime &time, FormatType format = LongFormat) const; + QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const; + QString toString(const QDateTime &dateTime, const QString &format) const; + + QString dateFormat(FormatType format = LongFormat) const; + QString timeFormat(FormatType format = LongFormat) const; + QString dateTimeFormat(FormatType format = LongFormat) const; + + QDate toDate(const QString &string, FormatType = LongFormat) const; + QTime toTime(const QString &string, FormatType = LongFormat) const; + QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const; + QDate toDate(const QString &string, const QString &format) const; + QTime toTime(const QString &string, const QString &format) const; + QDateTime toDateTime(const QString &string, const QString &format) const; + + + + + QChar decimalPoint() const; + QChar groupSeparator() const; + QChar percent() const; + QChar zeroDigit() const; + QChar negativeSign() const; + QChar positiveSign() const; + QChar exponential() const; + + QString monthName(int, FormatType format = LongFormat) const; + QString standaloneMonthName(int, FormatType format = LongFormat) const; + QString dayName(int, FormatType format = LongFormat) const; + QString standaloneDayName(int, FormatType format = LongFormat) const; + + Qt::DayOfWeek firstDayOfWeek() const; + QList<Qt::DayOfWeek> weekdays() const; + + QString amText() const; + QString pmText() const; + + MeasurementSystem measurementSystem() const; + + Qt::LayoutDirection textDirection() const; + + QString toUpper(const QString &str) const; + QString toLower(const QString &str) const; + + QString currencySymbol(CurrencySymbolFormat = CurrencySymbol) const; + QString toCurrencyString(qlonglong, const QString &symbol = QString()) const; + QString toCurrencyString(qulonglong, const QString &symbol = QString()) const; + inline QString toCurrencyString(short, const QString &symbol = QString()) const; + inline QString toCurrencyString(ushort, const QString &symbol = QString()) const; + inline QString toCurrencyString(int, const QString &symbol = QString()) const; + inline QString toCurrencyString(uint, const QString &symbol = QString()) const; + + + + + + QString toCurrencyString(double, const QString &symbol = QString()) const; + QString toCurrencyString(double, const QString &symbol, int precision) const; + inline QString toCurrencyString(float i, const QString &symbol = QString()) const + { return toCurrencyString(double(i), symbol); } + inline QString toCurrencyString(float i, const QString &symbol, int precision) const + { return toCurrencyString(double(i), symbol, precision); } + + + QStringList uiLanguages() const; + + bool operator==(const QLocale &other) const; + bool operator!=(const QLocale &other) const; + + static QString languageToString(Language language); + static QString countryToString(Country country); + static QString scriptToString(Script script); + static void setDefault(const QLocale &locale); + + static QLocale c() { return QLocale(C); } + static QLocale system(); + + static QList<QLocale> matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); + static QList<Country> countriesForLanguage(Language lang); + + void setNumberOptions(NumberOptions options); + NumberOptions numberOptions() const; + + enum QuotationStyle { StandardQuotation, AlternateQuotation }; + QString quoteString(const QString &str, QuotationStyle style = StandardQuotation) const; + QString quoteString(const QStringRef &str, QuotationStyle style = StandardQuotation) const; + + QString createSeparatedList(const QStringList &strl) const; + +private: + QLocale(QLocalePrivate &dd); + friend class QLocalePrivate; + friend __attribute__((visibility("default"))) uint qHash(const QLocale &key, uint seed) noexcept; + + QSharedDataPointer<QLocalePrivate> d; +}; +template<> class QTypeInfo<QLocale > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QLocale)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QLocale >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QLocale) }; static inline const char *name() { return "QLocale"; } }; inline void swap(QLocale &value1, QLocale &value2) noexcept(noexcept(value1.swap(value2))) { value1.swap(value2); } +constexpr inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QLocale::NumberOptions::enum_type f2) noexcept { return QFlags<QLocale::NumberOptions::enum_type>(f1) | f2; } constexpr inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QFlags<QLocale::NumberOptions::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QLocale::NumberOptions::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + +inline QString QLocale::toString(short i) const + { return toString(qlonglong(i)); } +inline QString QLocale::toString(ushort i) const + { return toString(qulonglong(i)); } +inline QString QLocale::toString(int i) const + { return toString(qlonglong(i)); } +inline QString QLocale::toString(uint i) const + { return toString(qulonglong(i)); } +inline QString QLocale::toString(float i, char f, int prec) const + { return toString(double(i), f, prec); } + +inline QString QLocale::toCurrencyString(short i, const QString &symbol) const + { return toCurrencyString(qlonglong(i), symbol); } +inline QString QLocale::toCurrencyString(ushort i, const QString &symbol) const + { return toCurrencyString(qulonglong(i), symbol); } +inline QString QLocale::toCurrencyString(int i, const QString &symbol) const +{ return toCurrencyString(qlonglong(i), symbol); } +inline QString QLocale::toCurrencyString(uint i, const QString &symbol) const +{ return toCurrencyString(qulonglong(i), symbol); } + + +__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLocale &); +__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLocale &); + + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QLocale &); + + + +# 1 "../../include/QtCore/qlocale.h" 2 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 2 +# 1 "../../include/QtCore/qscopedpointer.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qtextstream.h" 2 + + + + + + + + + + +class QTextCodec; +class QTextDecoder; + +class QTextStreamPrivate; +class __attribute__((visibility("default"))) QTextStream +{ + inline QTextStreamPrivate* d_func() { return reinterpret_cast<QTextStreamPrivate *>(qGetPtrHelper(d_ptr)); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast<const QTextStreamPrivate *>(qGetPtrHelper(d_ptr)); } friend class QTextStreamPrivate; + +public: + enum RealNumberNotation { + SmartNotation, + FixedNotation, + ScientificNotation + }; + enum FieldAlignment { + AlignLeft, + AlignRight, + AlignCenter, + AlignAccountingStyle + }; + enum Status { + Ok, + ReadPastEnd, + ReadCorruptData, + WriteFailed + }; + enum NumberFlag { + ShowBase = 0x1, + ForcePoint = 0x2, + ForceSign = 0x4, + UppercaseBase = 0x8, + UppercaseDigits = 0x10 + }; + typedef QFlags<NumberFlag> NumberFlags; + + QTextStream(); + explicit QTextStream(QIODevice *device); + explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly); + virtual ~QTextStream(); + + + void setCodec(QTextCodec *codec); + void setCodec(const char *codecName); + QTextCodec *codec() const; + void setAutoDetectUnicode(bool enabled); + bool autoDetectUnicode() const; + void setGenerateByteOrderMark(bool generate); + bool generateByteOrderMark() const; + + + void setLocale(const QLocale &locale); + QLocale locale() const; + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + QString *string() const; + + Status status() const; + void setStatus(Status status); + void resetStatus(); + + bool atEnd() const; + void reset(); + void flush(); + bool seek(qint64 pos); + qint64 pos() const; + + void skipWhiteSpace(); + + QString readLine(qint64 maxlen = 0); + bool readLineInto(QString *line, qint64 maxlen = 0); + QString readAll(); + QString read(qint64 maxlen); + + void setFieldAlignment(FieldAlignment alignment); + FieldAlignment fieldAlignment() const; + + void setPadChar(QChar ch); + QChar padChar() const; + + void setFieldWidth(int width); + int fieldWidth() const; + + void setNumberFlags(NumberFlags flags); + NumberFlags numberFlags() const; + + void setIntegerBase(int base); + int integerBase() const; + + void setRealNumberNotation(RealNumberNotation notation); + RealNumberNotation realNumberNotation() const; + + void setRealNumberPrecision(int precision); + int realNumberPrecision() const; + + QTextStream &operator>>(QChar &ch); + QTextStream &operator>>(char &ch); + QTextStream &operator>>(signed short &i); + QTextStream &operator>>(unsigned short &i); + QTextStream &operator>>(signed int &i); + QTextStream &operator>>(unsigned int &i); + QTextStream &operator>>(signed long &i); + QTextStream &operator>>(unsigned long &i); + QTextStream &operator>>(qlonglong &i); + QTextStream &operator>>(qulonglong &i); + QTextStream &operator>>(float &f); + QTextStream &operator>>(double &f); + QTextStream &operator>>(QString &s); + QTextStream &operator>>(QByteArray &array); + QTextStream &operator>>(char *c); + + QTextStream &operator<<(QChar ch); + QTextStream &operator<<(char ch); + QTextStream &operator<<(signed short i); + QTextStream &operator<<(unsigned short i); + QTextStream &operator<<(signed int i); + QTextStream &operator<<(unsigned int i); + QTextStream &operator<<(signed long i); + QTextStream &operator<<(unsigned long i); + QTextStream &operator<<(qlonglong i); + QTextStream &operator<<(qulonglong i); + QTextStream &operator<<(float f); + QTextStream &operator<<(double f); + QTextStream &operator<<(const QString &s); + QTextStream &operator<<(QLatin1String s); + QTextStream &operator<<(const QStringRef &s); + QTextStream &operator<<(const QByteArray &array); + QTextStream &operator<<(const char *c); + QTextStream &operator<<(const void *ptr); + +private: + QTextStream(const QTextStream &) = delete; QTextStream &operator=(const QTextStream &) = delete; + friend class QDebugStateSaverPrivate; + friend class QDebug; + + QScopedPointer<QTextStreamPrivate> d_ptr; +}; + +constexpr inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) noexcept { return QFlags<QTextStream::NumberFlags::enum_type>(f1) | f2; } constexpr inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QFlags<QTextStream::NumberFlags::enum_type> f2) noexcept { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QTextStream::NumberFlags::enum_type f1, int f2) noexcept { return QIncompatibleFlag(int(f1) | f2); } + + + + + +typedef QTextStream & (*QTextStreamFunction)(QTextStream &); +typedef void (QTextStream::*QTSMFI)(int); +typedef void (QTextStream::*QTSMFC)(QChar); + + +class __attribute__((visibility("default"))) QTextStreamManipulator +{ +public: + constexpr QTextStreamManipulator(QTSMFI m, int a) noexcept : mf(m), mc(nullptr), arg(a), ch() {} + constexpr QTextStreamManipulator(QTSMFC m, QChar c) noexcept : mf(nullptr), mc(m), arg(-1), ch(c) {} + void exec(QTextStream &s) { if (mf) { (s.*mf)(arg); } else { (s.*mc)(ch); } } + +private: + QTSMFI mf; + QTSMFC mc; + int arg; + QChar ch; +}; + +inline QTextStream &operator>>(QTextStream &s, QTextStreamFunction f) +{ return (*f)(s); } + +inline QTextStream &operator<<(QTextStream &s, QTextStreamFunction f) +{ return (*f)(s); } + +inline QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m) +{ m.exec(s); return s; } + +__attribute__((visibility("default"))) QTextStream &bin(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &oct(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &dec(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &hex(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &showbase(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &forcesign(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &forcepoint(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &noshowbase(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &noforcesign(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &noforcepoint(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &uppercasebase(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &uppercasedigits(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &lowercasebase(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &lowercasedigits(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &fixed(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &scientific(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &left(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &right(QTextStream &s); +__attribute__((visibility("default"))) QTextStream ¢er(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &endl(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &flush(QTextStream &s); +__attribute__((visibility("default"))) QTextStream &reset(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &bom(QTextStream &s); + +__attribute__((visibility("default"))) QTextStream &ws(QTextStream &s); + +inline QTextStreamManipulator qSetFieldWidth(int width) +{ + QTSMFI func = &QTextStream::setFieldWidth; + return QTextStreamManipulator(func,width); +} + +inline QTextStreamManipulator qSetPadChar(QChar ch) +{ + QTSMFC func = &QTextStream::setPadChar; + return QTextStreamManipulator(func, ch); +} + +inline QTextStreamManipulator qSetRealNumberPrecision(int precision) +{ + QTSMFI func = &QTextStream::setRealNumberPrecision; + return QTextStreamManipulator(func, precision); +} + + +# 1 "../../include/QtCore/qtextstream.h" 2 +# 50 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 51 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qvector.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" +# 1 "../../include/QtCore/qalgorithms.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 1 "../../include/QtCore/qiterator.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 1 "../../include/QtCore/qlist.h" 1 +# 46 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 1 "../../include/QtCore/qrefcount.h" 1 +# 47 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 1 "../../include/QtCore/qarraydata.h" 1 +# 48 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 1 "../../include/QtCore/qhashfunctions.h" 1 +# 49 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" 2 +# 60 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" + + +class QRegion; + +template <typename T> +class QVector +{ + typedef QTypedArrayData<T> Data; + Data *d; + +public: + inline QVector() noexcept : d(Data::sharedNull()) { } + explicit QVector(int size); + QVector(int size, const T &t); + inline QVector(const QVector<T> &v); + inline ~QVector() { if (!d->ref.deref()) freeData(d); } + QVector<T> &operator=(const QVector<T> &v); + + QVector(QVector<T> &&other) noexcept : d(other.d) { other.d = Data::sharedNull(); } + QVector<T> &operator=(QVector<T> &&other) noexcept + { QVector moved(std::move(other)); swap(moved); return *this; } + + void swap(QVector<T> &other) noexcept { qSwap(d, other.d); } + + inline QVector(std::initializer_list<T> args); + + bool operator==(const QVector<T> &v) const; + inline bool operator!=(const QVector<T> &v) const { return !(*this == v); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + void resize(int size); + + inline int capacity() const { return int(d->alloc); } + void reserve(int size); + inline void squeeze() + { + reallocData(d->size, d->size); + if (d->capacityReserved) { + + + d->capacityReserved = 0; + } + } + + inline void detach(); + inline bool isDetached() const { return !d->ref.isShared(); } + + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + + if (d == Data::unsharableEmpty()) { + if (sharable) + d = Data::sharedNull(); + } else { + d->ref.setSharable(sharable); + } + do { } while ((false) && (d->ref.isSharable() == sharable)); + } + + + inline bool isSharedWith(const QVector<T> &other) const { return d == other.d; } + + inline T *data() { detach(); return d->begin(); } + inline const T *data() const { return d->begin(); } + inline const T *constData() const { return d->begin(); } + void clear(); + + const T &at(int i) const; + T &operator[](int i); + const T &operator[](int i) const; + void append(const T &t); + + void append(T &&t); + + inline void append(const QVector<T> &l) { *this += l; } + void prepend(const T &t); + void insert(int i, const T &t); + void insert(int i, int n, const T &t); + void replace(int i, const T &t); + void remove(int i); + void remove(int i, int n); + inline void removeFirst() { do { } while ((false) && (!isEmpty())); erase(d->begin()); } + inline void removeLast(); + inline T takeFirst() { do { } while ((false) && (!isEmpty())); T r = first(); removeFirst(); return r; } + inline T takeLast() { do { } while ((false) && (!isEmpty())); T r = last(); removeLast(); return r; } + + QVector<T> &fill(const T &t, int size = -1); + + int indexOf(const T &t, int from = 0) const; + int lastIndexOf(const T &t, int from = -1) const; + bool contains(const T &t) const; + int count(const T &t) const; + + + void removeAt(int i) { remove(i); } + int removeAll(const T &t) + { + const const_iterator ce = this->cend(), cit = std::find(this->cbegin(), ce, t); + if (cit == ce) + return 0; + + const int firstFoundIdx = std::distance(this->cbegin(), cit); + const iterator e = end(), it = std::remove(begin() + firstFoundIdx, e, t); + const int result = std::distance(it, e); + erase(it, e); + return result; + } + bool removeOne(const T &t) + { + const int i = indexOf(t); + if (i < 0) + return false; + remove(i); + return true; + } + int length() const { return size(); } + T takeAt(int i) { T t = at(i); remove(i); return t; } + void move(int from, int to) + { + do { } while ((false) && (from >= 0 && from < size())); + do { } while ((false) && (to >= 0 && to < size())); + if (from == to) + return; + detach(); + T * const b = d->begin(); + if (from < to) + std::rotate(b + from, b + from + 1, b + to + 1); + else + std::rotate(b + to, b + from, b + from + 1); + } + + + typedef typename Data::iterator iterator; + typedef typename Data::const_iterator const_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + inline iterator begin() { detach(); return d->begin(); } + inline const_iterator begin() const noexcept { return d->constBegin(); } + inline const_iterator cbegin() const noexcept { return d->constBegin(); } + inline const_iterator constBegin() const noexcept { return d->constBegin(); } + inline iterator end() { detach(); return d->end(); } + inline const_iterator end() const noexcept { return d->constEnd(); } + inline const_iterator cend() const noexcept { return d->constEnd(); } + inline const_iterator constEnd() const noexcept { return d->constEnd(); } +# 222 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } + iterator insert(iterator before, int n, const T &x); + inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); } + iterator erase(iterator begin, iterator end); + inline iterator erase(iterator pos) { return erase(pos, pos+1); } + + + inline int count() const { return d->size; } + inline T& first() { do { } while ((false) && (!isEmpty())); return *begin(); } + inline const T &first() const { do { } while ((false) && (!isEmpty())); return *begin(); } + inline const T &constFirst() const { do { } while ((false) && (!isEmpty())); return *begin(); } + inline T& last() { do { } while ((false) && (!isEmpty())); return *(end()-1); } + inline const T &last() const { do { } while ((false) && (!isEmpty())); return *(end()-1); } + inline const T &constLast() const { do { } while ((false) && (!isEmpty())); return *(end()-1); } + inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; } + inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; } + QVector<T> mid(int pos, int len = -1) const; + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef qptrdiff difference_type; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef int size_type; + inline void push_back(const T &t) { append(t); } + + void push_back(T &&t) { append(std::move(t)); } + + inline void push_front(const T &t) { prepend(t); } + void pop_back() { removeLast(); } + void pop_front() { removeFirst(); } + inline bool empty() const + { return d->size == 0; } + inline T& front() { return first(); } + inline const_reference front() const { return first(); } + inline reference back() { return last(); } + inline const_reference back() const { return last(); } + + + QVector<T> &operator+=(const QVector<T> &l); + inline QVector<T> operator+(const QVector<T> &l) const + { QVector n = *this; n += l; return n; } + inline QVector<T> &operator+=(const T &t) + { append(t); return *this; } + inline QVector<T> &operator<< (const T &t) + { append(t); return *this; } + inline QVector<T> &operator<<(const QVector<T> &l) + { *this += l; return *this; } + + QList<T> toList() const; + + static QVector<T> fromList(const QList<T> &list); + + static inline QVector<T> fromStdVector(const std::vector<T> &vector) + { QVector<T> tmp; tmp.reserve(int(vector.size())); std::copy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; } + inline std::vector<T> toStdVector() const + { return std::vector<T>(d->begin(), d->end()); } +private: + friend class QRegion; + + void reallocData(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default); + void reallocData(const int sz) { reallocData(sz, d->alloc); } + void freeData(Data *d); + void defaultConstruct(T *from, T *to); + void copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom); + void destruct(T *from, T *to); + bool isValidIterator(const iterator &i) const + { + return (i <= d->end()) && (d->begin() <= i); + } + class AlignmentDummy { Data header; T array[1]; }; +}; +# 314 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" +template <typename T> +void QVector<T>::defaultConstruct(T *from, T *to) +{ + if (QTypeInfo<T>::isComplex) { + while (from != to) { + new (from++) T(); + } + } else { + ::memset(static_cast<void *>(from), 0, (to - from) * sizeof(T)); + } +} + + + + + +template <typename T> +void QVector<T>::copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom) +{ + if (QTypeInfo<T>::isComplex) { + while (srcFrom != srcTo) + new (dstFrom++) T(*srcFrom++); + } else { + ::memcpy(static_cast<void *>(dstFrom), static_cast<const void *>(srcFrom), (srcTo - srcFrom) * sizeof(T)); + } +} + + + + + + +template <typename T> +void QVector<T>::destruct(T *from, T *to) +{ + if (QTypeInfo<T>::isComplex) { + while (from != to) { + from++->~T(); + } + } +} + + + + + +template <typename T> +inline QVector<T>::QVector(const QVector<T> &v) +{ + if (v.d->ref.ref()) { + d = v.d; + } else { + if (v.d->capacityReserved) { + d = Data::allocate(v.d->alloc); + do { if (!(d)) qBadAlloc(); } while (0); + d->capacityReserved = true; + } else { + d = Data::allocate(v.d->size); + do { if (!(d)) qBadAlloc(); } while (0); + } + if (d->alloc) { + copyConstruct(v.d->begin(), v.d->end(), d->begin()); + d->size = v.d->size; + } + } +} + +template <typename T> +void QVector<T>::detach() +{ + if (!isDetached()) { + + if (!d->alloc) + d = Data::unsharableEmpty(); + else + + reallocData(d->size, int(d->alloc)); + } + do { } while ((false) && (isDetached())); +} + +template <typename T> +void QVector<T>::reserve(int asize) +{ + if (asize > int(d->alloc)) + reallocData(d->size, asize); + if (isDetached()) + d->capacityReserved = 1; + do { } while ((false) && (capacity() >= asize)); +} + +template <typename T> +void QVector<T>::resize(int asize) +{ + int newAlloc; + const int oldAlloc = int(d->alloc); + QArrayData::AllocationOptions opt; + + if (asize > oldAlloc) { + newAlloc = asize; + opt = QArrayData::Grow; + } else { + newAlloc = oldAlloc; + } + reallocData(asize, newAlloc, opt); +} +template <typename T> +inline void QVector<T>::clear() +{ resize(0); } +template <typename T> +inline const T &QVector<T>::at(int i) const +{ do { } while ((false) && (i >= 0 && i < d->size)); + return d->begin()[i]; } +template <typename T> +inline const T &QVector<T>::operator[](int i) const +{ do { } while ((false) && (i >= 0 && i < d->size)); + return d->begin()[i]; } +template <typename T> +inline T &QVector<T>::operator[](int i) +{ do { } while ((false) && (i >= 0 && i < d->size)); + return data()[i]; } +template <typename T> +inline void QVector<T>::insert(int i, const T &t) +{ do { } while ((false) && (i >= 0 && i <= d->size)); + insert(begin() + i, 1, t); } +template <typename T> +inline void QVector<T>::insert(int i, int n, const T &t) +{ do { } while ((false) && (i >= 0 && i <= d->size)); + insert(begin() + i, n, t); } +template <typename T> +inline void QVector<T>::remove(int i, int n) +{ do { } while ((false) && (i >= 0 && n >= 0 && i + n <= d->size)); + erase(d->begin() + i, d->begin() + i + n); } +template <typename T> +inline void QVector<T>::remove(int i) +{ do { } while ((false) && (i >= 0 && i < d->size)); + erase(d->begin() + i, d->begin() + i + 1); } +template <typename T> +inline void QVector<T>::prepend(const T &t) +{ insert(begin(), 1, t); } + +template <typename T> +inline void QVector<T>::replace(int i, const T &t) +{ + do { } while ((false) && (i >= 0 && i < d->size)); + const T copy(t); + data()[i] = copy; +} + +template <typename T> +QVector<T> &QVector<T>::operator=(const QVector<T> &v) +{ + if (v.d != d) { + QVector<T> tmp(v); + tmp.swap(*this); + } + return *this; +} + +template <typename T> +QVector<T>::QVector(int asize) +{ + do { } while ((false) && (asize >= 0)); + if (__builtin_expect(!!(asize > 0), true)) { + d = Data::allocate(asize); + do { if (!(d)) qBadAlloc(); } while (0); + d->size = asize; + defaultConstruct(d->begin(), d->end()); + } else { + d = Data::sharedNull(); + } +} + +template <typename T> +QVector<T>::QVector(int asize, const T &t) +{ + do { } while ((false) && (asize >= 0)); + if (asize > 0) { + d = Data::allocate(asize); + do { if (!(d)) qBadAlloc(); } while (0); + d->size = asize; + T* i = d->end(); + while (i != d->begin()) + new (--i) T(t); + } else { + d = Data::sharedNull(); + } +} + + +template <typename T> +QVector<T>::QVector(std::initializer_list<T> args) +{ + if (args.size() > 0) { + d = Data::allocate(args.size()); + do { if (!(d)) qBadAlloc(); } while (0); + + + copyConstruct(args.begin(), args.end(), d->begin()); + d->size = int(args.size()); + } else { + d = Data::sharedNull(); + } +} + + +template <typename T> +void QVector<T>::freeData(Data *x) +{ + destruct(x->begin(), x->end()); + Data::deallocate(x); +} + +template <typename T> +void QVector<T>::reallocData(const int asize, const int aalloc, QArrayData::AllocationOptions options) +{ + do { } while ((false) && (asize >= 0 && asize <= aalloc)); + Data *x = d; + + const bool isShared = d->ref.isShared(); + + if (aalloc != 0) { + if (aalloc != int(d->alloc) || isShared) { + try { + + x = Data::allocate(aalloc, options); + do { if (!(x)) qBadAlloc(); } while (0); + + + do { } while ((false) && (x->ref.isSharable() || options.testFlag(QArrayData::Unsharable))); + + do { } while ((false) && (!x->ref.isStatic())); + x->size = asize; + + T *srcBegin = d->begin(); + T *srcEnd = asize > d->size ? d->end() : d->begin() + asize; + T *dst = x->begin(); + + if (QTypeInfo<T>::isStatic || (isShared && QTypeInfo<T>::isComplex)) { + + while (srcBegin != srcEnd) { + new (dst++) T(*srcBegin++); + } + } else { + ::memcpy(static_cast<void *>(dst), static_cast<void *>(srcBegin), (srcEnd - srcBegin) * sizeof(T)); + dst += srcEnd - srcBegin; + + + if (asize < d->size) + destruct(d->begin() + asize, d->end()); + } + + if (asize > d->size) { + + try { + defaultConstruct(dst, x->end()); + } catch (...) { + + destruct(x->begin(), dst); + throw; + } + } + } catch (...) { + Data::deallocate(x); + throw; + } + x->capacityReserved = d->capacityReserved; + } else { + do { } while ((false) && (int(d->alloc) == aalloc)); + do { } while ((false) && (isDetached())); + do { } while ((false) && (x == d)); + if (asize <= d->size) { + destruct(x->begin() + asize, x->end()); + } else { + defaultConstruct(x->end(), x->begin() + asize); + } + x->size = asize; + } + } else { + x = Data::sharedNull(); + } + if (d != x) { + if (!d->ref.deref()) { + if (QTypeInfo<T>::isStatic || !aalloc || (isShared && QTypeInfo<T>::isComplex)) { + + + freeData(d); + } else { + Data::deallocate(d); + } + } + d = x; + } + + do { } while ((false) && (d->data())); + do { } while ((false) && (uint(d->size) <= d->alloc)); + + do { } while ((false) && (d != Data::unsharableEmpty())); + + do { } while ((false) && (aalloc ? d != Data::sharedNull() : d == Data::sharedNull())); + do { } while ((false) && (d->alloc >= uint(aalloc))); + do { } while ((false) && (d->size == asize)); +} + +template<typename T> + T QVector<T>::value(int i) const +{ + if (uint(i) >= uint(d->size)) { + return T(); + } + return d->begin()[i]; +} +template<typename T> + T QVector<T>::value(int i, const T &defaultValue) const +{ + return uint(i) >= uint(d->size) ? defaultValue : d->begin()[i]; +} + +template <typename T> +void QVector<T>::append(const T &t) +{ + const bool isTooSmall = uint(d->size + 1) > d->alloc; + if (!isDetached() || isTooSmall) { + T copy(t); + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt); + + if (QTypeInfo<T>::isComplex) + new (d->end()) T(std::move(copy)); + else + *d->end() = std::move(copy); + + } else { + if (QTypeInfo<T>::isComplex) + new (d->end()) T(t); + else + *d->end() = t; + } + ++d->size; +} + + +template <typename T> +void QVector<T>::append(T &&t) +{ + const bool isTooSmall = uint(d->size + 1) > d->alloc; + if (!isDetached() || isTooSmall) { + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt); + } + + new (d->end()) T(std::move(t)); + + ++d->size; +} + + +template <typename T> +void QVector<T>::removeLast() +{ + do { } while ((false) && (!isEmpty())); + do { } while ((false) && (d->alloc)); + + if (!d->ref.isShared()) { + --d->size; + if (QTypeInfo<T>::isComplex) + (d->data() + d->size)->~T(); + } else { + reallocData(d->size - 1); + } +} + +template <typename T> +typename QVector<T>::iterator QVector<T>::insert(iterator before, size_type n, const T &t) +{ + do { } while ((false) && (isValidIterator(before))); + + int offset = std::distance(d->begin(), before); + if (n != 0) { + const T copy(t); + if (!isDetached() || d->size + n > int(d->alloc)) + reallocData(d->size, d->size + n, QArrayData::Grow); + if (QTypeInfo<T>::isStatic) { + T *b = d->end(); + T *i = d->end() + n; + while (i != b) + new (--i) T; + i = d->end(); + T *j = i + n; + b = d->begin() + offset; + while (i != b) + *--j = *--i; + i = b+n; + while (i != b) + *--i = copy; + } else { + T *b = d->begin() + offset; + T *i = b + n; + memmove(i, b, (d->size - offset) * sizeof(T)); + while (i != b) + new (--i) T(copy); + } + d->size += n; + } + return d->begin() + offset; +} + +template <typename T> +typename QVector<T>::iterator QVector<T>::erase(iterator abegin, iterator aend) +{ + do { } while ((false) && (isValidIterator(abegin))); + do { } while ((false) && (isValidIterator(aend))); + + const int itemsToErase = aend - abegin; + + if (!itemsToErase) + return abegin; + + do { } while ((false) && (abegin >= d->begin())); + do { } while ((false) && (aend <= d->end())); + do { } while ((false) && (abegin <= aend)); + + const int itemsUntouched = abegin - d->begin(); + + + + + if (d->alloc) { + detach(); + abegin = d->begin() + itemsUntouched; + aend = abegin + itemsToErase; + if (QTypeInfo<T>::isStatic) { + iterator moveBegin = abegin + itemsToErase; + iterator moveEnd = d->end(); + while (moveBegin != moveEnd) { + if (QTypeInfo<T>::isComplex) + static_cast<T *>(abegin)->~T(); + new (abegin++) T(*moveBegin++); + } + if (abegin < d->end()) { + + destruct(abegin, d->end()); + } + } else { + destruct(abegin, aend); + memmove(abegin, aend, (d->size - itemsToErase - itemsUntouched) * sizeof(T)); + } + d->size -= itemsToErase; + } + return d->begin() + itemsUntouched; +} + +template <typename T> +bool QVector<T>::operator==(const QVector<T> &v) const +{ + if (d == v.d) + return true; + if (d->size != v.d->size) + return false; + const T *vb = v.d->begin(); + const T *b = d->begin(); + const T *e = d->end(); + return std::equal(b, e, vb); +} + +template <typename T> +QVector<T> &QVector<T>::fill(const T &from, int asize) +{ + const T copy(from); + resize(asize < 0 ? d->size : asize); + if (d->size) { + T *i = d->end(); + T *b = d->begin(); + while (i != b) + *--i = copy; + } + return *this; +} + +template <typename T> +QVector<T> &QVector<T>::operator+=(const QVector &l) +{ + uint newSize = d->size + l.d->size; + const bool isTooSmall = newSize > d->alloc; + if (!isDetached() || isTooSmall) { + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? newSize : d->alloc, opt); + } + + if (d->alloc) { + T *w = d->begin() + newSize; + T *i = l.d->end(); + T *b = l.d->begin(); + while (i != b) { + if (QTypeInfo<T>::isComplex) + new (--w) T(*--i); + else + *--w = *--i; + } + d->size = newSize; + } + return *this; +} + +template <typename T> +int QVector<T>::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + d->size, 0); + if (from < d->size) { + T* n = d->begin() + from - 1; + T* e = d->end(); + while (++n != e) + if (*n == t) + return n - d->begin(); + } + return -1; +} + +template <typename T> +int QVector<T>::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += d->size; + else if (from >= d->size) + from = d->size-1; + if (from >= 0) { + T* b = d->begin(); + T* n = d->begin() + from + 1; + while (n != b) { + if (*--n == t) + return n - b; + } + } + return -1; +} + +template <typename T> +bool QVector<T>::contains(const T &t) const +{ + const T *b = d->begin(); + const T *e = d->end(); + return std::find(b, e, t) != e; +} + +template <typename T> +int QVector<T>::count(const T &t) const +{ + const T *b = d->begin(); + const T *e = d->end(); + return int(std::count(b, e, t)); +} + +template <typename T> + QVector<T> QVector<T>::mid(int pos, int len) const +{ + using namespace QtPrivate; + switch (QContainerImplHelper::mid(d->size, &pos, &len)) { + case QContainerImplHelper::Null: + case QContainerImplHelper::Empty: + return QVector<T>(); + case QContainerImplHelper::Full: + return *this; + case QContainerImplHelper::Subset: + break; + } + + QVector<T> midResult; + midResult.reallocData(0, len); + T *srcFrom = d->begin() + pos; + T *srcTo = d->begin() + pos + len; + midResult.copyConstruct(srcFrom, srcTo, midResult.data()); + midResult.d->size = len; + return midResult; +} + +template <typename T> + QList<T> QVector<T>::toList() const +{ + QList<T> result; + result.reserve(size()); + for (int i = 0; i < size(); ++i) + result.append(at(i)); + return result; +} + +template <typename T> + QVector<T> QList<T>::toVector() const +{ + QVector<T> result(size()); + for (int i = 0; i < size(); ++i) + result[i] = at(i); + return result; +} + +template <typename T> +QVector<T> QVector<T>::fromList(const QList<T> &list) +{ + return list.toVector(); +} + +template <typename T> +QList<T> QList<T>::fromVector(const QVector<T> &vector) +{ + return vector.toList(); +} + +template <class T> class QVectorIterator { typedef typename QVector<T>::const_iterator const_iterator; QVector<T> c; const_iterator i; public: inline QVectorIterator(const QVector<T> &container) : c(container), i(c.constBegin()) {} inline QVectorIterator &operator=(const QVector<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } }; +template <class T> class QMutableVectorIterator { typedef typename QVector<T>::iterator iterator; typedef typename QVector<T>::const_iterator const_iterator; QVector<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableVectorIterator(QVector<T> &container) : c(&container) { i = c->begin(); n = c->end(); } inline QMutableVectorIterator &operator=(QVector<T> &container) { c = &container; i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { do { } while ((false) && (item_exists())); return *n; } inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } }; + +template <typename T> +uint qHash(const QVector<T> &key, uint seed = 0) + noexcept(noexcept(qHashRange(key.cbegin(), key.cend(), seed))) +{ + return qHashRange(key.cbegin(), key.cend(), seed); +} + +template <typename T> +bool operator<(const QVector<T> &lhs, const QVector<T> &rhs) + noexcept(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end()))) + +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template <typename T> +inline bool operator>(const QVector<T> &lhs, const QVector<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template <typename T> +inline bool operator<=(const QVector<T> &lhs, const QVector<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template <typename T> +inline bool operator>=(const QVector<T> &lhs, const QVector<T> &rhs) + noexcept(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} +# 982 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h" + +# 1 "../../include/QtCore/qvector.h" 2 +# 52 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qset.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qset.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qset.h" +# 1 "../../include/QtCore/qhash.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qset.h" 2 + + + + + + + + + +template <class T> +class QSet +{ + typedef QHash<T, QHashDummyValue> Hash; + +public: + inline QSet() noexcept {} + + inline QSet(std::initializer_list<T> list) + { + reserve(int(list.size())); + for (typename std::initializer_list<T>::const_iterator it = list.begin(); it != list.end(); ++it) + insert(*it); + } + + + + + inline void swap(QSet<T> &other) noexcept { q_hash.swap(other.q_hash); } + + inline bool operator==(const QSet<T> &other) const + { return q_hash == other.q_hash; } + inline bool operator!=(const QSet<T> &other) const + { return q_hash != other.q_hash; } + + inline int size() const { return q_hash.size(); } + + inline bool isEmpty() const { return q_hash.isEmpty(); } + + inline int capacity() const { return q_hash.capacity(); } + inline void reserve(int size); + inline void squeeze() { q_hash.squeeze(); } + + inline void detach() { q_hash.detach(); } + inline bool isDetached() const { return q_hash.isDetached(); } + + inline void setSharable(bool sharable) { q_hash.setSharable(sharable); } + + + inline void clear() { q_hash.clear(); } + + inline bool remove(const T &value) { return q_hash.remove(value) != 0; } + + inline bool contains(const T &value) const { return q_hash.contains(value); } + + bool contains(const QSet<T> &set) const; + + class const_iterator; + + class iterator + { + typedef QHash<T, QHashDummyValue> Hash; + typename Hash::iterator i; + friend class const_iterator; + friend class QSet<T>; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline iterator() {} + inline iterator(typename Hash::iterator o) : i(o) {} + inline iterator(const iterator &o) : i(o.i) {} + inline iterator &operator=(const iterator &o) { i = o.i; return *this; } + inline const T &operator*() const { return i.key(); } + inline const T *operator->() const { return &i.key(); } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator r = *this; ++i; return r; } + inline iterator &operator--() { --i; return *this; } + inline iterator operator--(int) { iterator r = *this; --i; return r; } + inline iterator operator+(int j) const { return i + j; } + inline iterator operator-(int j) const { return i - j; } + inline iterator &operator+=(int j) { i += j; return *this; } + inline iterator &operator-=(int j) { i -= j; return *this; } + }; + + class const_iterator + { + typedef QHash<T, QHashDummyValue> Hash; + typename Hash::const_iterator i; + friend class iterator; + friend class QSet<T>; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() {} + inline const_iterator(typename Hash::const_iterator o) : i(o) {} + inline const_iterator(const const_iterator &o) : i(o.i) {} + inline const_iterator(const iterator &o) + : i(o.i) {} + inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; } + inline const T &operator*() const { return i.key(); } + inline const T *operator->() const { return &i.key(); } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; } + inline const_iterator &operator--() { --i; return *this; } + inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; } + inline const_iterator operator+(int j) const { return i + j; } + inline const_iterator operator-(int j) const { return i - j; } + inline const_iterator &operator+=(int j) { i += j; return *this; } + inline const_iterator &operator-=(int j) { i -= j; return *this; } + }; + + + typedef std::reverse_iterator<iterator> reverse_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + inline iterator begin() { return q_hash.begin(); } + inline const_iterator begin() const noexcept { return q_hash.begin(); } + inline const_iterator cbegin() const noexcept { return q_hash.begin(); } + inline const_iterator constBegin() const noexcept { return q_hash.constBegin(); } + inline iterator end() { return q_hash.end(); } + inline const_iterator end() const noexcept { return q_hash.end(); } + inline const_iterator cend() const noexcept { return q_hash.end(); } + inline const_iterator constEnd() const noexcept { return q_hash.constEnd(); } + + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } + + iterator erase(iterator i) + { return erase(m2c(i)); } + iterator erase(const_iterator i) + { + do { } while ((false) && (isValidIterator(i))); + return q_hash.erase(reinterpret_cast<typename Hash::const_iterator &>(i)); + } + + + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return q_hash.count(); } + inline iterator insert(const T &value) + { return static_cast<typename Hash::iterator>(q_hash.insert(value, QHashDummyValue())); } + iterator find(const T &value) { return q_hash.find(value); } + const_iterator find(const T &value) const { return q_hash.find(value); } + inline const_iterator constFind(const T &value) const { return find(value); } + QSet<T> &unite(const QSet<T> &other); + QSet<T> &intersect(const QSet<T> &other); + bool intersects(const QSet<T> &other) const; + QSet<T> &subtract(const QSet<T> &other); + + + typedef T key_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + + inline QSet<T> &operator<<(const T &value) { insert(value); return *this; } + inline QSet<T> &operator|=(const QSet<T> &other) { unite(other); return *this; } + inline QSet<T> &operator|=(const T &value) { insert(value); return *this; } + inline QSet<T> &operator&=(const QSet<T> &other) { intersect(other); return *this; } + inline QSet<T> &operator&=(const T &value) + { QSet<T> result; if (contains(value)) result.insert(value); return (*this = result); } + inline QSet<T> &operator+=(const QSet<T> &other) { unite(other); return *this; } + inline QSet<T> &operator+=(const T &value) { insert(value); return *this; } + inline QSet<T> &operator-=(const QSet<T> &other) { subtract(other); return *this; } + inline QSet<T> &operator-=(const T &value) { remove(value); return *this; } + inline QSet<T> operator|(const QSet<T> &other) const + { QSet<T> result = *this; result |= other; return result; } + inline QSet<T> operator&(const QSet<T> &other) const + { QSet<T> result = *this; result &= other; return result; } + inline QSet<T> operator+(const QSet<T> &other) const + { QSet<T> result = *this; result += other; return result; } + inline QSet<T> operator-(const QSet<T> &other) const + { QSet<T> result = *this; result -= other; return result; } + + QList<T> toList() const; + inline QList<T> values() const { return toList(); } + + static QSet<T> fromList(const QList<T> &list); + +private: + Hash q_hash; + + static const_iterator m2c(iterator it) noexcept + { return const_iterator(typename Hash::const_iterator(it.i.i)); } + + bool isValidIterator(const iterator &i) const + { + return q_hash.isValidIterator(reinterpret_cast<const typename Hash::iterator&>(i)); + } + bool isValidIterator(const const_iterator &i) const noexcept + { + return q_hash.isValidIterator(reinterpret_cast<const typename Hash::const_iterator&>(i)); + } +}; + +template <typename T> +uint qHash(const QSet<T> &key, uint seed = 0) +noexcept(noexcept(qHashRangeCommutative(key.begin(), key.end(), seed))) +{ + return qHashRangeCommutative(key.begin(), key.end(), seed); +} + + + +template <class T> +inline void QSet<T>::reserve(int asize) { q_hash.reserve(asize); } + +template <class T> +inline QSet<T> &QSet<T>::unite(const QSet<T> &other) +{ + QSet<T> copy(other); + typename QSet<T>::const_iterator i = copy.constEnd(); + while (i != copy.constBegin()) { + --i; + insert(*i); + } + return *this; +} + +template <class T> +inline QSet<T> &QSet<T>::intersect(const QSet<T> &other) +{ + QSet<T> copy1; + QSet<T> copy2; + if (size() <= other.size()) { + copy1 = *this; + copy2 = other; + } else { + copy1 = other; + copy2 = *this; + *this = copy1; + } + typename QSet<T>::const_iterator i = copy1.constEnd(); + while (i != copy1.constBegin()) { + --i; + if (!copy2.contains(*i)) + remove(*i); + } + return *this; +} + +template <class T> +inline bool QSet<T>::intersects(const QSet<T> &other) const +{ + const bool otherIsBigger = other.size() > size(); + const QSet &smallestSet = otherIsBigger ? *this : other; + const QSet &biggestSet = otherIsBigger ? other : *this; + const bool equalSeeds = q_hash.d->seed == other.q_hash.d->seed; + typename QSet::const_iterator i = smallestSet.cbegin(); + typename QSet::const_iterator e = smallestSet.cend(); + + if (__builtin_expect(!!(equalSeeds), true)) { + + while (i != e) { + if (*biggestSet.q_hash.findNode(*i, i.i.i->h) != biggestSet.q_hash.e) + return true; + ++i; + } + } else { + while (i != e) { + if (biggestSet.contains(*i)) + return true; + ++i; + } + } + + return false; +} + +template <class T> +inline QSet<T> &QSet<T>::subtract(const QSet<T> &other) +{ + QSet<T> copy1(*this); + QSet<T> copy2(other); + typename QSet<T>::const_iterator i = copy1.constEnd(); + while (i != copy1.constBegin()) { + --i; + if (copy2.contains(*i)) + remove(*i); + } + return *this; +} + +template <class T> +inline bool QSet<T>::contains(const QSet<T> &other) const +{ + typename QSet<T>::const_iterator i = other.constBegin(); + while (i != other.constEnd()) { + if (!contains(*i)) + return false; + ++i; + } + return true; +} + +template <typename T> + QList<T> QSet<T>::toList() const +{ + QList<T> result; + result.reserve(size()); + typename QSet<T>::const_iterator i = constBegin(); + while (i != constEnd()) { + result.append(*i); + ++i; + } + return result; +} + +template <typename T> + QSet<T> QList<T>::toSet() const +{ + QSet<T> result; + result.reserve(size()); + for (int i = 0; i < size(); ++i) + result.insert(at(i)); + return result; +} + +template <typename T> +QSet<T> QSet<T>::fromList(const QList<T> &list) +{ + return list.toSet(); +} + +template <typename T> +QList<T> QList<T>::fromSet(const QSet<T> &set) +{ + return set.toList(); +} + +template <class T> class QSetIterator { typedef typename QSet<T>::const_iterator const_iterator; QSet<T> c; const_iterator i; public: inline QSetIterator(const QSet<T> &container) : c(container), i(c.constBegin()) {} inline QSetIterator &operator=(const QSet<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } }; + +template <typename T> +class QMutableSetIterator +{ + typedef typename QSet<T>::iterator iterator; + QSet<T> *c; + iterator i, n; + inline bool item_exists() const { return c->constEnd() != n; } + +public: + inline QMutableSetIterator(QSet<T> &container) + : c(&container) + { i = c->begin(); n = c->end(); } + inline QMutableSetIterator &operator=(QSet<T> &container) + { c = &container; i = c->begin(); n = c->end(); return *this; } + inline void toFront() { i = c->begin(); n = c->end(); } + inline void toBack() { i = c->end(); n = i; } + inline bool hasNext() const { return c->constEnd() != i; } + inline const T &next() { n = i++; return *n; } + inline const T &peekNext() const { return *i; } + inline bool hasPrevious() const { return c->constBegin() != i; } + inline const T &previous() { n = --i; return *n; } + inline const T &peekPrevious() const { iterator p = i; return *--p; } + inline void remove() + { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } } + inline const T &value() const { do { } while ((false) && (item_exists())); return *n; } + inline bool findNext(const T &t) + { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; } + inline bool findPrevious(const T &t) + { while (c->constBegin() != i) if (*(n = --i) == t) return true; + n = c->end(); return false; } +}; + + +# 1 "../../include/QtCore/qset.h" 2 +# 53 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 +# 1 "../../include/QtCore/qcontiguouscache.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontiguouscache.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontiguouscache.h" +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontiguouscache.h" 2 +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 1 3 4 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qcontiguouscache.h" 2 + + + + + + + +struct __attribute__((visibility("default"))) QContiguousCacheData +{ + QBasicAtomicInt ref; + int alloc; + int count; + int start; + int offset; + uint sharable : 1; + uint reserved : 31; + + + + + + + static QContiguousCacheData *allocateData(int size, int alignment); + static void freeData(QContiguousCacheData *data); + + + + +}; + +template <typename T> +struct QContiguousCacheTypedData: private QContiguousCacheData +{ + + T array[1]; + + static inline void freeData(QContiguousCacheTypedData *data) { QContiguousCacheData::freeData(data); } +}; + +template<typename T> +class QContiguousCache { + typedef QContiguousCacheTypedData<T> Data; + union { QContiguousCacheData *d; QContiguousCacheTypedData<T> *p; }; +public: + + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef qptrdiff difference_type; + typedef int size_type; + + explicit QContiguousCache(int capacity = 0); + QContiguousCache(const QContiguousCache<T> &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } + + inline ~QContiguousCache() { if (!d) return; if (!d->ref.deref()) freeData(p); } + + inline void detach() { if (d->ref.load() != 1) detach_helper(); } + inline bool isDetached() const { return d->ref.load() == 1; } + + inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } + + + QContiguousCache<T> &operator=(const QContiguousCache<T> &other); + + inline QContiguousCache<T> &operator=(QContiguousCache<T> &&other) + { qSwap(d, other.d); return *this; } + + inline void swap(QContiguousCache<T> &other) { qSwap(d, other.d); } + bool operator==(const QContiguousCache<T> &other) const; + inline bool operator!=(const QContiguousCache<T> &other) const { return !(*this == other); } + + inline int capacity() const {return d->alloc; } + inline int count() const { return d->count; } + inline int size() const { return d->count; } + + inline bool isEmpty() const { return d->count == 0; } + inline bool isFull() const { return d->count == d->alloc; } + inline int available() const { return d->alloc - d->count; } + + void clear(); + void setCapacity(int size); + + const T &at(int pos) const; + T &operator[](int i); + const T &operator[](int i) const; + + void append(const T &value); + void prepend(const T &value); + void insert(int pos, const T &value); + + inline bool containsIndex(int pos) const { return pos >= d->offset && pos - d->offset < d->count; } + inline int firstIndex() const { return d->offset; } + inline int lastIndex() const { return d->offset + d->count - 1; } + + inline const T &first() const { do { } while ((false) && (!isEmpty())); return p->array[d->start]; } + inline const T &last() const { do { } while ((false) && (!isEmpty())); return p->array[(d->start + d->count -1) % d->alloc]; } + inline T &first() { do { } while ((false) && (!isEmpty())); detach(); return p->array[d->start]; } + inline T &last() { do { } while ((false) && (!isEmpty())); detach(); return p->array[(d->start + d->count -1) % d->alloc]; } + + void removeFirst(); + T takeFirst(); + void removeLast(); + T takeLast(); + + inline bool areIndexesValid() const + { return d->offset >= 0 && d->offset < 0x7fffffff - d->count && (d->offset % d->alloc) == d->start; } + + inline void normalizeIndexes() { d->offset = d->start; } + + + + +private: + void detach_helper(); + + QContiguousCacheData *allocateData(int aalloc); + void freeData(Data *x); + int sizeOfTypedData() { + + + return reinterpret_cast<const char *>(&(reinterpret_cast<const Data *>(this))->array[1]) - reinterpret_cast<const char *>(this); + } + int alignOfTypedData() const + { + return qMax<int>(sizeof(void*), __alignof__(Data)); + } +}; + +template <typename T> +void QContiguousCache<T>::detach_helper() +{ + union { QContiguousCacheData *d; QContiguousCacheTypedData<T> *p; } x; + + x.d = allocateData(d->alloc); + x.d->ref.store(1); + x.d->count = d->count; + x.d->start = d->start; + x.d->offset = d->offset; + x.d->alloc = d->alloc; + x.d->sharable = true; + x.d->reserved = 0; + + T *dest = x.p->array + x.d->start; + T *src = p->array + d->start; + int oldcount = x.d->count; + while (oldcount--) { + if (QTypeInfo<T>::isComplex) { + new (dest) T(*src); + } else { + *dest = *src; + } + dest++; + if (dest == x.p->array + x.d->alloc) + dest = x.p->array; + src++; + if (src == p->array + d->alloc) + src = p->array; + } + + if (!d->ref.deref()) + freeData(p); + d = x.d; +} + +template <typename T> +void QContiguousCache<T>::setCapacity(int asize) +{ + if (asize == d->alloc) + return; + detach(); + union { QContiguousCacheData *d; QContiguousCacheTypedData<T> *p; } x; + x.d = allocateData(asize); + x.d->alloc = asize; + x.d->count = qMin(d->count, asize); + x.d->offset = d->offset + d->count - x.d->count; + if(asize) + x.d->start = x.d->offset % x.d->alloc; + else + x.d->start = 0; + + int oldcount = x.d->count; + if(oldcount) + { + T *dest = x.p->array + (x.d->start + x.d->count-1) % x.d->alloc; + T *src = p->array + (d->start + d->count-1) % d->alloc; + while (oldcount--) { + if (QTypeInfo<T>::isComplex) { + new (dest) T(*src); + } else { + *dest = *src; + } + if (dest == x.p->array) + dest = x.p->array + x.d->alloc; + dest--; + if (src == p->array) + src = p->array + d->alloc; + src--; + } + } + + freeData(p); + d = x.d; +} + +template <typename T> +void QContiguousCache<T>::clear() +{ + if (d->ref.load() == 1) { + if (QTypeInfo<T>::isComplex) { + int oldcount = d->count; + T * i = p->array + d->start; + T * e = p->array + d->alloc; + while (oldcount--) { + i->~T(); + i++; + if (i == e) + i = p->array; + } + } + d->count = d->start = d->offset = 0; + } else { + union { QContiguousCacheData *d; QContiguousCacheTypedData<T> *p; } x; + x.d = allocateData(d->alloc); + x.d->ref.store(1); + x.d->alloc = d->alloc; + x.d->count = x.d->start = x.d->offset = 0; + x.d->sharable = true; + if (!d->ref.deref()) freeData(p); + d = x.d; + } +} + +template <typename T> +inline QContiguousCacheData *QContiguousCache<T>::allocateData(int aalloc) +{ + return QContiguousCacheData::allocateData(sizeOfTypedData() + (aalloc - 1) * sizeof(T), alignOfTypedData()); +} + +template <typename T> +QContiguousCache<T>::QContiguousCache(int cap) +{ + d = allocateData(cap); + d->ref.store(1); + d->alloc = cap; + d->count = d->start = d->offset = 0; + d->sharable = true; +} + +template <typename T> +QContiguousCache<T> &QContiguousCache<T>::operator=(const QContiguousCache<T> &other) +{ + other.d->ref.ref(); + if (!d->ref.deref()) + freeData(p); + d = other.d; + if (!d->sharable) + detach_helper(); + return *this; +} + +template <typename T> +bool QContiguousCache<T>::operator==(const QContiguousCache<T> &other) const +{ + if (other.d == d) + return true; + if (other.d->start != d->start + || other.d->count != d->count + || other.d->offset != d->offset + || other.d->alloc != d->alloc) + return false; + for (int i = firstIndex(); i <= lastIndex(); ++i) + if (!(at(i) == other.at(i))) + return false; + return true; +} + +template <typename T> +void QContiguousCache<T>::freeData(Data *x) +{ + if (QTypeInfo<T>::isComplex) { + int oldcount = d->count; + T * i = p->array + d->start; + T * e = p->array + d->alloc; + while (oldcount--) { + i->~T(); + i++; + if (i == e) + i = p->array; + } + } + x->freeData(x); +} +template <typename T> +void QContiguousCache<T>::append(const T &value) +{ + if (!d->alloc) + return; + detach(); + if (QTypeInfo<T>::isComplex) { + if (d->count == d->alloc) + (p->array + (d->start+d->count) % d->alloc)->~T(); + new (p->array + (d->start+d->count) % d->alloc) T(value); + } else { + p->array[(d->start+d->count) % d->alloc] = value; + } + + if (d->count == d->alloc) { + d->start++; + d->start %= d->alloc; + d->offset++; + } else { + d->count++; + } +} + +template<typename T> +void QContiguousCache<T>::prepend(const T &value) +{ + if (!d->alloc) + return; + detach(); + if (d->start) + d->start--; + else + d->start = d->alloc-1; + d->offset--; + + if (d->count != d->alloc) + d->count++; + else + if (d->count == d->alloc) + (p->array + d->start)->~T(); + + if (QTypeInfo<T>::isComplex) + new (p->array + d->start) T(value); + else + p->array[d->start] = value; +} + +template<typename T> +void QContiguousCache<T>::insert(int pos, const T &value) +{ + do { } while ((false) && (pos >= 0 && pos < 0x7fffffff)); + if (!d->alloc) + return; + detach(); + if (containsIndex(pos)) { + if (QTypeInfo<T>::isComplex) { + (p->array + pos % d->alloc)->~T(); + new (p->array + pos % d->alloc) T(value); + } else { + p->array[pos % d->alloc] = value; + } + } else if (pos == d->offset-1) + prepend(value); + else if (pos == d->offset+d->count) + append(value); + else { + + clear(); + d->offset = pos; + d->start = pos % d->alloc; + d->count = 1; + if (QTypeInfo<T>::isComplex) + new (p->array + d->start) T(value); + else + p->array[d->start] = value; + } +} + +template <typename T> +inline const T &QContiguousCache<T>::at(int pos) const +{ do { } while ((false) && (pos >= d->offset && pos - d->offset < d->count)); return p->array[pos % d->alloc]; } +template <typename T> +inline const T &QContiguousCache<T>::operator[](int pos) const +{ do { } while ((false) && (pos >= d->offset && pos - d->offset < d->count)); return p->array[pos % d->alloc]; } + +template <typename T> +inline T &QContiguousCache<T>::operator[](int pos) +{ + detach(); + if (!containsIndex(pos)) + insert(pos, T()); + return p->array[pos % d->alloc]; +} + +template <typename T> +inline void QContiguousCache<T>::removeFirst() +{ + do { } while ((false) && (d->count > 0)); + detach(); + d->count--; + if (QTypeInfo<T>::isComplex) + (p->array + d->start)->~T(); + d->start = (d->start + 1) % d->alloc; + d->offset++; +} + +template <typename T> +inline void QContiguousCache<T>::removeLast() +{ + do { } while ((false) && (d->count > 0)); + detach(); + d->count--; + if (QTypeInfo<T>::isComplex) + (p->array + (d->start + d->count) % d->alloc)->~T(); +} + +template <typename T> +inline T QContiguousCache<T>::takeFirst() +{ T t = first(); removeFirst(); return t; } + +template <typename T> +inline T QContiguousCache<T>::takeLast() +{ T t = last(); removeLast(); return t; } + + +# 1 "../../include/QtCore/qcontiguouscache.h" 2 +# 54 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" 2 + + + + + + + + + + +class __attribute__((visibility("default"))) QDebug +{ + friend class QMessageLogger; + friend class QDebugStateSaverPrivate; + struct Stream { + enum { DefaultVerbosity = 2, VerbosityShift = 29, VerbosityMask = 0x7 }; + + Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), + space(true), message_output(false), flags(DefaultVerbosity << VerbosityShift) {} + Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), + space(true), message_output(false), flags(DefaultVerbosity << VerbosityShift) {} + Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), + space(true), message_output(true), flags(DefaultVerbosity << VerbosityShift) {} + QTextStream ts; + QString buffer; + int ref; + QtMsgType type; + bool space; + bool message_output; + QMessageLogContext context; + + enum FormatFlag { + NoQuotes = 0x1 + }; + + + bool testFlag(FormatFlag flag) const { return (context.version > 1) ? (flags & flag) : false; } + void setFlag(FormatFlag flag) { if (context.version > 1) { flags |= flag; } } + void unsetFlag(FormatFlag flag) { if (context.version > 1) { flags &= ~flag; } } + int verbosity() const + { return context.version > 1 ? (flags >> VerbosityShift) & VerbosityMask : int(Stream::DefaultVerbosity); } + void setVerbosity(int v) + { + if (context.version > 1) { + flags &= ~(VerbosityMask << VerbosityShift); + flags |= (v & VerbosityMask) << VerbosityShift; + } + } + + int flags; + } *stream; + + enum Latin1Content { ContainsBinary = 0, ContainsLatin1 }; + + void putUcs4(uint ucs4); + void putString(const QChar *begin, size_t length); + void putByteArray(const char *begin, size_t length, Latin1Content content); +public: + inline QDebug(QIODevice *device) : stream(new Stream(device)) {} + inline QDebug(QString *string) : stream(new Stream(string)) {} + inline QDebug(QtMsgType t) : stream(new Stream(t)) {} + inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; } + inline QDebug &operator=(const QDebug &other); + ~QDebug(); + inline void swap(QDebug &other) noexcept { qSwap(stream, other.stream); } + + QDebug &resetFormat(); + + inline QDebug &space() { stream->space = true; stream->ts << ' '; return *this; } + inline QDebug &nospace() { stream->space = false; return *this; } + inline QDebug &maybeSpace() { if (stream->space) stream->ts << ' '; return *this; } + int verbosity() const { return stream->verbosity(); } + void setVerbosity(int verbosityLevel) { stream->setVerbosity(verbosityLevel); } + + bool autoInsertSpaces() const { return stream->space; } + void setAutoInsertSpaces(bool b) { stream->space = b; } + + inline QDebug "e() { stream->unsetFlag(Stream::NoQuotes); return *this; } + inline QDebug &noquote() { stream->setFlag(Stream::NoQuotes); return *this; } + inline QDebug &maybeQuote(char c = '"') { if (!(stream->testFlag(Stream::NoQuotes))) stream->ts << c; return *this; } + + inline QDebug &operator<<(QChar t) { putUcs4(t.unicode()); return maybeSpace(); } + inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); } + inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned short t) { stream->ts << t; return maybeSpace(); } + + inline QDebug &operator<<(char16_t t) { return *this << QChar(t); } + inline QDebug &operator<<(char32_t t) { putUcs4(t); return maybeSpace(); } + + inline QDebug &operator<<(signed int t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned int t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(signed long t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned long t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(qint64 t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(quint64 t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(float t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(double t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(const char* t) { stream->ts << QString::fromUtf8(t); return maybeSpace(); } + inline QDebug &operator<<(const QString & t) { putString(t.constData(), uint(t.length())); return maybeSpace(); } + inline QDebug &operator<<(const QStringRef & t) { putString(t.constData(), uint(t.length())); return maybeSpace(); } + inline QDebug &operator<<(QLatin1String t) { putByteArray(t.latin1(), t.size(), ContainsLatin1); return maybeSpace(); } + inline QDebug &operator<<(const QByteArray & t) { putByteArray(t.constData(), t.size(), ContainsBinary); return maybeSpace(); } + inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); } + + inline QDebug &operator<<(std::nullptr_t) { stream->ts << "(nullptr)"; return maybeSpace(); } + + inline QDebug &operator<<(QTextStreamFunction f) { + stream->ts << f; + return *this; + } + + inline QDebug &operator<<(QTextStreamManipulator m) + { stream->ts << m; return *this; } +}; + +template<> class QTypeInfo<QDebug > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QDebug)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QDebug >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QDebug) }; static inline const char *name() { return "QDebug"; } }; inline void swap(QDebug &value1, QDebug &value2) noexcept(noexcept(value1.swap(value2))) { value1.swap(value2); } + +class QDebugStateSaverPrivate; +class __attribute__((visibility("default"))) QDebugStateSaver +{ +public: + QDebugStateSaver(QDebug &dbg); + ~QDebugStateSaver(); +private: + QDebugStateSaver(const QDebugStateSaver &) = delete; QDebugStateSaver &operator=(const QDebugStateSaver &) = delete; + QScopedPointer<QDebugStateSaverPrivate> d; +}; + +class QNoDebug +{ +public: + inline QNoDebug &operator<<(QTextStreamFunction) { return *this; } + inline QNoDebug &operator<<(QTextStreamManipulator) { return *this; } + inline QNoDebug &space() { return *this; } + inline QNoDebug &nospace() { return *this; } + inline QNoDebug &maybeSpace() { return *this; } + inline QNoDebug "e() { return *this; } + inline QNoDebug &noquote() { return *this; } + inline QNoDebug &maybeQuote(const char = '"') { return *this; } + + template<typename T> + inline QNoDebug &operator<<(const T &) { return *this; } +}; + +inline QDebug &QDebug::operator=(const QDebug &other) +{ + if (this != &other) { + QDebug copy(other); + qSwap(stream, copy.stream); + } + return *this; +} + +namespace QtPrivate { + +template <typename SequentialContainer> +inline QDebug printSequentialContainer(QDebug debug, const char *which, const SequentialContainer &c) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << which << '('; + typename SequentialContainer::const_iterator it = c.begin(), end = c.end(); + if (it != end) { + debug << *it; + ++it; + } + while (it != end) { + debug << ", " << *it; + ++it; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +} + +template <class T> +inline QDebug operator<<(QDebug debug, const QList<T> &list) +{ + return QtPrivate::printSequentialContainer(debug, "" , list); +} + +template <typename T> +inline QDebug operator<<(QDebug debug, const QVector<T> &vec) +{ + return QtPrivate::printSequentialContainer(debug, "QVector", vec); +} + +template <typename T, typename Alloc> +inline QDebug operator<<(QDebug debug, const std::vector<T, Alloc> &vec) +{ + return QtPrivate::printSequentialContainer(debug, "std::vector", vec); +} + +template <typename T, typename Alloc> +inline QDebug operator<<(QDebug debug, const std::list<T, Alloc> &vec) +{ + return QtPrivate::printSequentialContainer(debug, "std::list", vec); +} + +template <typename Key, typename T, typename Compare, typename Alloc> +inline QDebug operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map) +{ + return QtPrivate::printSequentialContainer(debug, "std::map", map); +} + +template <typename Key, typename T, typename Compare, typename Alloc> +inline QDebug operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map) +{ + return QtPrivate::printSequentialContainer(debug, "std::multimap", map); +} + +template <class Key, class T> +inline QDebug operator<<(QDebug debug, const QMap<Key, T> &map) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QMap("; + for (typename QMap<Key, T>::const_iterator it = map.constBegin(); + it != map.constEnd(); ++it) { + debug << '(' << it.key() << ", " << it.value() << ')'; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template <class Key, class T> +inline QDebug operator<<(QDebug debug, const QHash<Key, T> &hash) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QHash("; + for (typename QHash<Key, T>::const_iterator it = hash.constBegin(); + it != hash.constEnd(); ++it) + debug << '(' << it.key() << ", " << it.value() << ')'; + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template <class T1, class T2> +inline QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QPair(" << pair.first << ',' << pair.second << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template <class T1, class T2> +inline QDebug operator<<(QDebug debug, const std::pair<T1, T2> &pair) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "std::pair(" << pair.first << ',' << pair.second << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template <typename T> +inline QDebug operator<<(QDebug debug, const QSet<T> &set) +{ + return QtPrivate::printSequentialContainer(debug, "QSet", set); +} + +template <class T> +inline QDebug operator<<(QDebug debug, const QContiguousCache<T> &cache) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QContiguousCache("; + for (int i = cache.firstIndex(); i <= cache.lastIndex(); ++i) { + debug << cache[i]; + if (i != cache.lastIndex()) + debug << ", "; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +__attribute__((visibility("default"))) void qt_QMetaEnum_flagDebugOperator(QDebug &debug, size_t sizeofT, int value); + +template <typename Int> +void qt_QMetaEnum_flagDebugOperator(QDebug &debug, size_t sizeofT, Int value) +{ + const QDebugStateSaver saver(debug); + debug.resetFormat(); + debug.nospace() << "QFlags(" << hex << showbase; + bool needSeparator = false; + for (uint i = 0; i < sizeofT * 8; ++i) { + if (value & (Int(1) << i)) { + if (needSeparator) + debug << '|'; + else + needSeparator = true; + debug << (Int(1) << i); + } + } + debug << ')'; +} + + +__attribute__((visibility("default"))) QDebug qt_QMetaEnum_debugOperator(QDebug&, int value, const QMetaObject *meta, const char *name); +__attribute__((visibility("default"))) QDebug qt_QMetaEnum_flagDebugOperator(QDebug &dbg, quint64 value, const QMetaObject *meta, const char *name); + +template<typename T> +typename QtPrivate::QEnableIf<QtPrivate::IsQEnumHelper<T>::Value, QDebug>::Type +operator<<(QDebug dbg, T value) +{ + const QMetaObject *obj = qt_getEnumMetaObject(value); + const char *name = qt_getEnumName(value); + return qt_QMetaEnum_debugOperator(dbg, typename QFlags<T>::Int(value), obj, name); +} + +template <class T> +inline typename QtPrivate::QEnableIf< + QtPrivate::IsQEnumHelper<T>::Value || QtPrivate::IsQEnumHelper<QFlags<T> >::Value, + QDebug>::Type +qt_QMetaEnum_flagDebugOperator_helper(QDebug debug, const QFlags<T> &flags) +{ + const QMetaObject *obj = qt_getEnumMetaObject(T()); + const char *name = qt_getEnumName(T()); + return qt_QMetaEnum_flagDebugOperator(debug, quint64(flags), obj, name); +} + +template <class T> +inline typename QtPrivate::QEnableIf< + !QtPrivate::IsQEnumHelper<T>::Value && !QtPrivate::IsQEnumHelper<QFlags<T> >::Value, + QDebug>::Type +qt_QMetaEnum_flagDebugOperator_helper(QDebug debug, const QFlags<T> &flags) + + + + +{ + qt_QMetaEnum_flagDebugOperator(debug, sizeof(T), typename QFlags<T>::Int(flags)); + return debug; +} + +template<typename T> +inline QDebug operator<<(QDebug debug, const QFlags<T> &flags) +{ + + + return qt_QMetaEnum_flagDebugOperator_helper(debug, flags); +} +# 476 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/io/qdebug.h" + +# 1 "../../include/QtCore/qdebug.h" 2 +# 46 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 + +# 1 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 1 +# 55 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" +# 1 "../../include/QtCore/qjsonobject.h" 1 +# 56 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qjsonvalue.h" 1 +# 57 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qjsondocument.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsondocument.h" 1 +# 43 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsondocument.h" +# 1 "../../include/QtCore/qjsonvalue.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/json/qjsondocument.h" 2 + + + +class QDebug; + +namespace QJsonPrivate { + class Parser; +} + +struct __attribute__((visibility("default"))) QJsonParseError +{ + enum ParseError { + NoError = 0, + UnterminatedObject, + MissingNameSeparator, + UnterminatedArray, + MissingValueSeparator, + IllegalValue, + TerminationByNumber, + IllegalNumber, + IllegalEscapeSequence, + IllegalUTF8String, + UnterminatedString, + MissingObject, + DeepNesting, + DocumentTooLarge, + GarbageAtEnd + }; + + QString errorString() const; + + int offset; + ParseError error; +}; + +class __attribute__((visibility("default"))) QJsonDocument +{ +public: + + static const uint BinaryFormatTag = ('q') | ('b' << 8) | ('j' << 16) | ('s' << 24); + + + + + QJsonDocument(); + explicit QJsonDocument(const QJsonObject &object); + explicit QJsonDocument(const QJsonArray &array); + ~QJsonDocument(); + + QJsonDocument(const QJsonDocument &other); + QJsonDocument &operator =(const QJsonDocument &other); + + enum DataValidation { + Validate, + BypassValidation + }; + + static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate); + const char *rawData(int *size) const; + + static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate); + QByteArray toBinaryData() const; + + static QJsonDocument fromVariant(const QVariant &variant); + QVariant toVariant() const; + + enum JsonFormat { + Indented, + Compact + }; + + static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = nullptr); + + + + + QByteArray toJson() const; + QByteArray toJson(JsonFormat format) const; + + + bool isEmpty() const; + bool isArray() const; + bool isObject() const; + + QJsonObject object() const; + QJsonArray array() const; + + void setObject(const QJsonObject &object); + void setArray(const QJsonArray &array); + + bool operator==(const QJsonDocument &other) const; + bool operator!=(const QJsonDocument &other) const { return !(*this == other); } + + bool isNull() const; + +private: + friend class QJsonValue; + friend class QJsonPrivate::Data; + friend class QJsonPrivate::Parser; + friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonDocument &); + + QJsonDocument(QJsonPrivate::Data *data); + + QJsonPrivate::Data *d; +}; + + +__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QJsonDocument &); + + + +# 1 "../../include/QtCore/qjsondocument.h" 2 +# 58 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qjsonarray.h" 1 +# 59 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 60 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qstring.h" 1 +# 61 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qendian.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" 1 +# 44 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 45 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" 2 + + + + + + + + + + + +inline void qbswap_helper(const uchar *src, uchar *dest, int size) +{ + for (int i = 0; i < size ; ++i) dest[i] = src[size - 1 - i]; +} + + + + + + + +template <typename T> inline void qbswap(const T src, uchar *dest) +{ + qbswap_helper(reinterpret_cast<const uchar *>(&src), dest, sizeof(T)); +} + + + +template <typename T> inline void qToUnaligned(const T src, uchar *dest) +{ + + + const size_t size = sizeof(T); + memcpy(dest, &src, size); +} +template <typename T> inline T qFromUnaligned(const uchar *src) +{ + T dest; + const size_t size = sizeof(T); + memcpy(&dest, src, size); + return dest; +} + + + + + + + +template <typename T> T qbswap(T source); + + + + +template <> inline quint64 qbswap<quint64>(quint64 source) +{ + return __builtin_bswap64(source); +} +template <> inline quint32 qbswap<quint32>(quint32 source) +{ + return __builtin_bswap32(source); +} + +template <> inline void qbswap<quint64>(quint64 source, uchar *dest) +{ + qToUnaligned<quint64>(__builtin_bswap64(source), dest); +} +template <> inline void qbswap<quint32>(quint32 source, uchar *dest) +{ + qToUnaligned<quint32>(__builtin_bswap32(source), dest); +} +# 141 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" +template <> inline quint16 qbswap<quint16>(quint16 source) +{ + return __builtin_bswap16(source); +} +template <> inline void qbswap<quint16>(quint16 source, uchar *dest) +{ + qToUnaligned<quint16>(__builtin_bswap16(source), dest); +} +# 159 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" +template <> inline qint64 qbswap<qint64>(qint64 source) +{ + return qbswap<quint64>(quint64(source)); +} + +template <> inline qint32 qbswap<qint32>(qint32 source) +{ + return qbswap<quint32>(quint32(source)); +} + +template <> inline qint16 qbswap<qint16>(qint16 source) +{ + return qbswap<quint16>(quint16(source)); +} + +template <> inline void qbswap<qint64>(qint64 source, uchar *dest) +{ + qbswap<quint64>(quint64(source), dest); +} + +template <> inline void qbswap<qint32>(qint32 source, uchar *dest) +{ + qbswap<quint32>(quint32(source), dest); +} + +template <> inline void qbswap<qint16>(qint16 source, uchar *dest) +{ + qbswap<quint16>(quint16(source), dest); +} +# 205 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/global/qendian.h" +template <typename T> inline T qToBigEndian(T source) +{ return qbswap<T>(source); } +template <typename T> inline T qFromBigEndian(T source) +{ return qbswap<T>(source); } +template <typename T> inline T qToLittleEndian(T source) +{ return source; } +template <typename T> inline T qFromLittleEndian(T source) +{ return source; } +template <typename T> inline void qToBigEndian(T src, uchar *dest) +{ qbswap<T>(src, dest); } +template <typename T> inline void qToLittleEndian(T src, uchar *dest) +{ qToUnaligned<T>(src, dest); } + + + +template <> inline quint8 qbswap<quint8>(quint8 source) +{ + return source; +} + +template <> inline qint8 qbswap<qint8>(qint8 source) +{ + return source; +} + + + + + + +template <typename T> inline T qFromLittleEndian(const uchar *src) +{ + return qFromLittleEndian(qFromUnaligned<T>(src)); +} + +template <> inline quint8 qFromLittleEndian<quint8>(const uchar *src) +{ return static_cast<quint8>(src[0]); } +template <> inline qint8 qFromLittleEndian<qint8>(const uchar *src) +{ return static_cast<qint8>(src[0]); } + + + + + +template <class T> inline T qFromBigEndian(const uchar *src) +{ + return qFromBigEndian(qFromUnaligned<T>(src)); +} + +template <> inline quint8 qFromBigEndian<quint8>(const uchar *src) +{ return static_cast<quint8>(src[0]); } +template <> inline qint8 qFromBigEndian<qint8>(const uchar *src) +{ return static_cast<qint8>(src[0]); } + + +# 1 "../../include/QtCore/qendian.h" 2 +# 62 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 +# 1 "../../include/QtCore/qnumeric.h" 1 +# 63 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 + +# 1 "../../include/QtCore/5.7.0/QtCore/private/qsimd_p.h" 1 +# 1 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" 1 +# 55 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 56 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" 2 +# 1 "../../include/QtCore/qatomic.h" 1 +# 1 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 1 +# 41 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" +# 1 "../../include/QtCore/qglobal.h" 1 +# 42 "../../include/QtCore/../../../../qt5/qtbase/src/corelib/thread/qatomic.h" 2 +# 1 "../../include/QtCore/qatomic.h" 2 +# 57 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" 2 +# 280 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" +# 281 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" 2 +# 290 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/arm_acle.h" 1 3 4 +# 32 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include/arm_acle.h" 3 4 +#pragma GCC push_options + +#pragma GCC target ("+nothing+crc") + + +extern "C" { + + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32b (uint32_t __a, uint8_t __b) +{ + return __builtin_aarch64_crc32b (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cb (uint32_t __a, uint8_t __b) +{ + return __builtin_aarch64_crc32cb (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32ch (uint32_t __a, uint16_t __b) +{ + return __builtin_aarch64_crc32ch (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cw (uint32_t __a, uint32_t __b) +{ + return __builtin_aarch64_crc32cw (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cd (uint32_t __a, uint64_t __b) +{ + return __builtin_aarch64_crc32cx (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32h (uint32_t __a, uint16_t __b) +{ + return __builtin_aarch64_crc32h (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32w (uint32_t __a, uint32_t __b) +{ + return __builtin_aarch64_crc32w (__a, __b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32d (uint32_t __a, uint64_t __b) +{ + return __builtin_aarch64_crc32x (__a, __b); +} + + +} + + +#pragma GCC pop_options +# 291 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" 2 + + + + + + + + +# 298 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" +enum CPUFeatures { + + CpuFeatureNEON = 0, + CpuFeatureARM_NEON = CpuFeatureNEON, + CpuFeatureCRC32 = 1, +# 345 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" + QSimdInitialized = 0x80000000 +}; + +static const quint64 qCompilerCpuFeatures = 0 +# 428 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" + | (static_cast<unsigned long long>(1ULL) << CpuFeatureNEON) +# 439 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" + ; + + +extern __attribute__((visibility("default"))) QBasicAtomicInteger<quint64> qt_cpu_features[1]; + + + +__attribute__((visibility("default"))) void qDetectCpuFeatures(); + +static inline quint64 qCpuFeatures() +{ + quint64 features = qt_cpu_features[0].load(); + + + + if (__builtin_expect(!!(features == 0), false)) { + qDetectCpuFeatures(); + features = qt_cpu_features[0].load(); + + + + do { const bool valueOfExpression = features != 0; do { } while ((false) && (valueOfExpression)); if (valueOfExpression){} else __builtin_unreachable(); } while (0); + } + return features; +} +# 524 "../../include/QtCore/5.7.0/QtCore/private/../../../../../../../qt5/qtbase/src/corelib/tools/qsimd_p.h" +template <typename T> +inline __attribute__((always_inline)) +T qUnalignedLoad(const void *ptr) noexcept +{ + T result; + + + + memcpy + + (&result, ptr, sizeof result); + return result; +} + +template <typename T> +inline __attribute__((always_inline)) +void qUnalignedStore(void *ptr, T t) noexcept +{ + + + + memcpy + + (ptr, &t, sizeof t); +} + + +# 1 "../../include/QtCore/5.7.0/QtCore/private/qsimd_p.h" 2 +# 65 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 + +# 1 "/opt/toolchains/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/5.3.1/include-fixed/limits.h" 1 3 4 +# 67 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" 2 + + + +# 125 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" +namespace QJsonPrivate { + +class Array; +class Object; +class Value; +class Entry; + +template<typename T> +class q_littleendian +{ +public: + T val; + + q_littleendian &operator =(T i) { val = qToLittleEndian(i); return *this; } + operator T() const { return qFromLittleEndian(val); } + + bool operator ==(T i) { return qFromLittleEndian(val) == i; } + bool operator !=(T i) { return qFromLittleEndian(val) != i; } + bool operator ==(q_littleendian<T> i) { return val == i.val; } + bool operator !=(q_littleendian<T> i) { return val != i.val; } + bool operator <(T i) { return qFromLittleEndian(val) < i; } + bool operator >(T i) { return qFromLittleEndian(val) > i; } + bool operator <=(T i) { return qFromLittleEndian(val) <= i; } + bool operator >=(T i) { return qFromLittleEndian(val) >= i; } + q_littleendian &operator +=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) + i); + return *this; + } +}; +} + +template <typename T> +class QTypeInfo<QJsonPrivate::q_littleendian<T> > + : public QTypeInfoMerger<QJsonPrivate::q_littleendian<T>, T> {}; + +namespace QJsonPrivate { + +typedef q_littleendian<short> qle_short; +typedef q_littleendian<unsigned short> qle_ushort; +typedef q_littleendian<int> qle_int; +typedef q_littleendian<unsigned int> qle_uint; + +template<int pos, int width> +class qle_bitfield +{ +public: + uint val; + + enum { + mask = ((1u << width) - 1) << pos + }; + + void operator =(uint t) { + uint i = qFromLittleEndian(val); + i &= ~mask; + i |= t << pos; + val = qToLittleEndian(i); + } + operator uint() const { + uint t = qFromLittleEndian(val); + t &= mask; + t >>= pos; + return t; + } + bool operator !() const { + return !operator uint(); + } + + bool operator ==(uint t) { return uint(*this) == t; } + bool operator !=(uint t) { return uint(*this) != t; } + bool operator <(uint t) { return uint(*this) < t; } + bool operator >(uint t) { return uint(*this) > t; } + bool operator <=(uint t) { return uint(*this) <= t; } + bool operator >=(uint t) { return uint(*this) >= t; } + qle_bitfield &operator +=(uint i) { + *this = (uint(*this) + i); + return *this; + } + qle_bitfield &operator -=(uint i) { + *this = (uint(*this) - i); + return *this; + } +}; + +template<int pos, int width> +class qle_signedbitfield +{ +public: + uint val; + + enum { + mask = ((1u << width) - 1) << pos + }; + + void operator =(int t) { + uint i = qFromLittleEndian(val); + i &= ~mask; + i |= t << pos; + val = qToLittleEndian(i); + } + operator int() const { + uint i = qFromLittleEndian(val); + i <<= 32 - width - pos; + int t = (int) i; + t >>= pos; + return t; + } + bool operator !() const { + return !operator int(); + } + + bool operator ==(int t) { return int(*this) == t; } + bool operator !=(int t) { return int(*this) != t; } + bool operator <(int t) { return int(*this) < t; } + bool operator >(int t) { return int(*this) > t; } + bool operator <=(int t) { return int(*this) <= t; } + bool operator >=(int t) { return int(*this) >= t; } + qle_signedbitfield &operator +=(int i) { + *this = (int(*this) + i); + return *this; + } + qle_signedbitfield &operator -=(int i) { + *this = (int(*this) - i); + return *this; + } +}; + +typedef qle_uint offset; + + +inline int alignedSize(int size) { return (size + 3) & ~3; } + +static inline bool useCompressed(const QString &s) +{ + if (s.length() >= 0x8000) + return false; + const ushort *uc = (const ushort *)s.constData(); + const ushort *e = uc + s.length(); + while (uc < e) { + if (*uc > 0xff) + return false; + ++uc; + } + return true; +} + +static inline int qStringSize(const QString &string, bool compress) +{ + int l = 2 + string.length(); + if (!compress) + l *= 2; + return alignedSize(l); +} + + +static inline int compressedNumber(double d) +{ + + const int exponent_off = 52; + const quint64 fraction_mask = 0x000fffffffffffffull; + const quint64 exponent_mask = 0x7ff0000000000000ull; + + quint64 val; + memcpy (&val, &d, sizeof(double)); + int exp = (int)((val & exponent_mask) >> exponent_off) - 1023; + if (exp < 0 || exp > 25) + return 0x7fffffff; + + quint64 non_int = val & (fraction_mask >> exp); + if (non_int) + return 0x7fffffff; + + bool neg = (val >> 63) != 0; + val &= fraction_mask; + val |= ((quint64)1 << 52); + int res = (int)(val >> (52 - exp)); + return neg ? -res : res; +} + +class Latin1String; + +class String +{ +public: + String(const char *data) { d = (Data *)data; } + + struct Data { + qle_int length; + qle_ushort utf16[1]; + }; + + Data *d; + + inline String &operator=(const QString &str) + { + d->length = str.length(); + + + + + + memcpy(d->utf16, str.unicode(), str.length()*sizeof(ushort)); + + if (str.length() & 1) + d->utf16[str.length()] = 0; + return *this; + } + + inline bool operator ==(const QString &str) const { + int slen = str.length(); + int l = d->length; + if (slen != l) + return false; + const ushort *s = (const ushort *)str.constData(); + const qle_ushort *a = d->utf16; + const ushort *b = s; + while (l-- && *a == *b) + a++,b++; + return (l == -1); + } + inline bool operator !=(const QString &str) const { + return !operator ==(str); + } + inline bool operator >=(const QString &str) const { + + return toString() >= str; + } + + inline bool operator<(const Latin1String &str) const; + inline bool operator>=(const Latin1String &str) const { return !operator <(str); } + inline bool operator ==(const Latin1String &str) const; + + inline bool operator ==(const String &str) const { + if (d->length != str.d->length) + return false; + return !memcmp(d->utf16, str.d->utf16, d->length*sizeof(ushort)); + } + inline bool operator<(const String &other) const; + inline bool operator >=(const String &other) const { return !(*this < other); } + + inline QString toString() const { + + return QString((QChar *)d->utf16, d->length); +# 376 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" + } + +}; + +class Latin1String +{ +public: + Latin1String(const char *data) { d = (Data *)data; } + + struct Data { + qle_short length; + char latin1[1]; + }; + Data *d; + + inline Latin1String &operator=(const QString &str) + { + int len = d->length = str.length(); + uchar *l = (uchar *)d->latin1; + const ushort *uc = (const ushort *)str.unicode(); + int i = 0; +# 417 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" + for ( ; i < len; ++i) + l[i] = uc[i]; + for ( ; (quintptr)(l+i) & 0x3; ++i) + l[i] = 0; + return *this; + } + + inline bool operator ==(const QString &str) const { + return QLatin1String(d->latin1, d->length) == str; + } + inline bool operator !=(const QString &str) const { + return !operator ==(str); + } + inline bool operator >=(const QString &str) const { + return QLatin1String(d->latin1, d->length) >= str; + } + + inline bool operator ==(const Latin1String &str) const { + return d->length == str.d->length && !strcmp(d->latin1, str.d->latin1); + } + inline bool operator >=(const Latin1String &str) const { + int l = qMin(d->length, str.d->length); + int val = strncmp(d->latin1, str.d->latin1, l); + if (!val) + val = d->length - str.d->length; + return val >= 0; + } + inline bool operator<(const String &str) const + { + const qle_ushort *uc = (qle_ushort *) str.d->utf16; + if (!uc || *uc == 0) + return false; + + const uchar *c = (uchar *)d->latin1; + const uchar *e = c + qMin((int)d->length, (int)str.d->length); + + while (c < e) { + if (*c != *uc) + break; + ++c; + ++uc; + } + return (c == e ? (int)d->length < (int)str.d->length : *c < *uc); + + } + inline bool operator ==(const String &str) const { + return (str == *this); + } + inline bool operator >=(const String &str) const { + return !(*this < str); + } + + inline QString toString() const { + return QString::fromLatin1(d->latin1, d->length); + } +}; + +inline bool String::operator ==(const Latin1String &str) const +{ + if ((int)d->length != (int)str.d->length) + return false; + const qle_ushort *uc = d->utf16; + const qle_ushort *e = uc + d->length; + const uchar *c = (uchar *)str.d->latin1; + + while (uc < e) { + if (*uc != *c) + return false; + ++uc; + ++c; + } + return true; +} + +inline bool String::operator <(const String &other) const +{ + int alen = d->length; + int blen = other.d->length; + int l = qMin(alen, blen); + qle_ushort *a = d->utf16; + qle_ushort *b = other.d->utf16; + + while (l-- && *a == *b) + a++,b++; + if (l==-1) + return (alen < blen); + return (ushort)*a < (ushort)*b; +} + +inline bool String::operator<(const Latin1String &str) const +{ + const uchar *c = (uchar *) str.d->latin1; + if (!c || *c == 0) + return false; + + const qle_ushort *uc = d->utf16; + const qle_ushort *e = uc + qMin((int)d->length, (int)str.d->length); + + while (uc < e) { + if (*uc != *c) + break; + ++uc; + ++c; + } + return (uc == e ? (int)d->length < (int)str.d->length : (ushort)*uc < *c); + +} + +static inline void copyString(char *dest, const QString &str, bool compress) +{ + if (compress) { + Latin1String string(dest); + string = str; + } else { + String string(dest); + string = str; + } +} +# 548 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjson_p.h" +class Base +{ +public: + qle_uint size; + union { + uint _dummy; + qle_bitfield<0, 1> is_object; + qle_bitfield<1, 31> length; + }; + offset tableOffset; + + + inline bool isObject() const { return !!is_object; } + inline bool isArray() const { return !isObject(); } + + inline offset *table() const { return (offset *) (((char *) this) + tableOffset); } + + int reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace); + void removeItems(int pos, int numItems); +}; + +class Object : public Base +{ +public: + Entry *entryAt(int i) const { + return reinterpret_cast<Entry *>(((char *)this) + table()[i]); + } + int indexOf(const QString &key, bool *exists); + + bool isValid() const; +}; + + +class Array : public Base +{ +public: + inline Value at(int i) const; + inline Value &operator [](int i); + + bool isValid() const; +}; + + +class Value +{ +public: + enum { + MaxSize = (1<<27) - 1 + }; + union { + uint _dummy; + qle_bitfield<0, 3> type; + qle_bitfield<3, 1> latinOrIntValue; + qle_bitfield<4, 1> latinKey; + qle_bitfield<5, 27> value; + qle_signedbitfield<5, 27> int_value; + }; + + inline char *data(const Base *b) const { return ((char *)b) + value; } + int usedStorage(const Base *b) const; + + bool toBoolean() const; + double toDouble(const Base *b) const; + QString toString(const Base *b) const; + String asString(const Base *b) const; + Latin1String asLatin1String(const Base *b) const; + Base *base(const Base *b) const; + + bool isValid(const Base *b) const; + + static int requiredStorage(QJsonValue &v, bool *compressed); + static uint valueToStore(const QJsonValue &v, uint offset); + static void copyData(const QJsonValue &v, char *dest, bool compressed); +}; + +inline Value Array::at(int i) const +{ + return *(Value *) (table() + i); +} + +inline Value &Array::operator [](int i) +{ + return *(Value *) (table() + i); +} + + + +class Entry { +public: + Value value; + + + + int size() const { + int s = sizeof(Entry); + if (value.latinKey) + s += sizeof(ushort) + qFromLittleEndian(*(ushort *) ((const char *)this + sizeof(Entry))); + else + s += sizeof(uint) + sizeof(ushort)*qFromLittleEndian(*(int *) ((const char *)this + sizeof(Entry))); + return alignedSize(s); + } + + int usedStorage(Base *b) const { + return size() + value.usedStorage(b); + } + + String shallowKey() const + { + do { } while ((false) && (!value.latinKey)); + return String((const char *)this + sizeof(Entry)); + } + Latin1String shallowLatin1Key() const + { + do { } while ((false) && (value.latinKey)); + return Latin1String((const char *)this + sizeof(Entry)); + } + QString key() const + { + if (value.latinKey) { + return shallowLatin1Key().toString(); + } + return shallowKey().toString(); + } + + bool operator ==(const QString &key) const; + inline bool operator !=(const QString &key) const { return !operator ==(key); } + inline bool operator >=(const QString &key) const; + + bool operator ==(const Entry &other) const; + bool operator >=(const Entry &other) const; +}; + +inline bool Entry::operator >=(const QString &key) const +{ + if (value.latinKey) + return (shallowLatin1Key() >= key); + else + return (shallowKey() >= key); +} + +inline bool operator <(const QString &key, const Entry &e) +{ return e >= key; } + + +class Header { +public: + qle_uint tag; + qle_uint version; + Base *root() { return (Base *)(this + 1); } +}; + + +inline bool Value::toBoolean() const +{ + do { } while ((false) && (type == QJsonValue::Bool)); + return value != 0; +} + +inline double Value::toDouble(const Base *b) const +{ + do { } while ((false) && (type == QJsonValue::Double)); + if (latinOrIntValue) + return int_value; + + quint64 i = qFromLittleEndian<quint64>((const uchar *)b + value); + double d; + memcpy(&d, &i, sizeof(double)); + return d; +} + +inline String Value::asString(const Base *b) const +{ + do { } while ((false) && (type == QJsonValue::String && !latinOrIntValue)); + return String(data(b)); +} + +inline Latin1String Value::asLatin1String(const Base *b) const +{ + do { } while ((false) && (type == QJsonValue::String && latinOrIntValue)); + return Latin1String(data(b)); +} + +inline QString Value::toString(const Base *b) const +{ + if (latinOrIntValue) + return asLatin1String(b).toString(); + else + return asString(b).toString(); +} + +inline Base *Value::base(const Base *b) const +{ + do { } while ((false) && (type == QJsonValue::Array || type == QJsonValue::Object)); + return reinterpret_cast<Base *>(data(b)); +} + +class Data { +public: + enum Validation { + Unchecked, + Validated, + Invalid + }; + + QAtomicInt ref; + int alloc; + union { + char *rawData; + Header *header; + }; + uint compactionCounter : 31; + uint ownsData : 1; + + inline Data(char *raw, int a) + : alloc(a), rawData(raw), compactionCounter(0), ownsData(true) + { + } + inline Data(int reserved, QJsonValue::Type valueType) + : rawData(0), compactionCounter(0), ownsData(true) + { + do { } while ((false) && (valueType == QJsonValue::Array || valueType == QJsonValue::Object)); + + alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset); + header = (Header *)malloc(alloc); + do { if (!(header)) qBadAlloc(); } while (0); + header->tag = QJsonDocument::BinaryFormatTag; + header->version = 1; + Base *b = header->root(); + b->size = sizeof(Base); + b->is_object = (valueType == QJsonValue::Object); + b->tableOffset = sizeof(Base); + b->length = 0; + } + inline ~Data() + { if (ownsData) free(rawData); } + + uint offsetOf(const void *ptr) const { return (uint)(((char *)ptr - rawData)); } + + QJsonObject toObject(Object *o) const + { + return QJsonObject(const_cast<Data *>(this), o); + } + + QJsonArray toArray(Array *a) const + { + return QJsonArray(const_cast<Data *>(this), a); + } + + Data *clone(Base *b, int reserve = 0) + { + int size = sizeof(Header) + b->size; + if (b == header->root() && ref.load() == 1 && alloc >= size + reserve) + return this; + + if (reserve) { + if (reserve < 128) + reserve = 128; + size = qMax(size + reserve, qMin(size *2, (int)Value::MaxSize)); + if (size > Value::MaxSize) { + QMessageLogger(nullptr, 0, nullptr).warning("QJson: Document too large to store in data structure"); + return 0; + } + } + char *raw = (char *)malloc(size); + do { if (!(raw)) qBadAlloc(); } while (0); + memcpy(raw + sizeof(Header), b, b->size); + Header *h = (Header *)raw; + h->tag = QJsonDocument::BinaryFormatTag; + h->version = 1; + Data *d = new Data(raw, size); + d->compactionCounter = (b == header->root()) ? compactionCounter : 0; + return d; + } + + void compact(); + bool valid() const; + +private: + Data(const Data &) = delete; Data &operator=(const Data &) = delete; +}; + +} + + +# 48 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" 2 + + +# 106 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonValue::QJsonValue(Type type) + : ui(0), d(0), t(type) +{ +} + + + + +QJsonValue::QJsonValue(QJsonPrivate::Data *data, QJsonPrivate::Base *base, const QJsonPrivate::Value &v) + : d(0) +{ + t = (Type)(uint)v.type; + switch (t) { + case Undefined: + case Null: + dbl = 0; + break; + case Bool: + b = v.toBoolean(); + break; + case Double: + dbl = v.toDouble(base); + break; + case String: { + QString s = v.toString(base); + stringData = s.data_ptr(); + stringData->ref.ref(); + break; + } + case Array: + case Object: + d = data; + this->base = v.base(base); + break; + } + if (d) + d->ref.ref(); +} + + + + +QJsonValue::QJsonValue(bool b) + : d(0), t(Bool) +{ + this->b = b; +} + + + + +QJsonValue::QJsonValue(double n) + : d(0), t(Double) +{ + this->dbl = n; +} + + + + + +QJsonValue::QJsonValue(int n) + : d(0), t(Double) +{ + this->dbl = n; +} + + + + + + + +QJsonValue::QJsonValue(qint64 n) + : d(0), t(Double) +{ + this->dbl = double(n); +} + + + + +QJsonValue::QJsonValue(const QString &s) + : d(0), t(String) +{ + stringDataFromQStringHelper(s); +} +# 206 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +void QJsonValue::stringDataFromQStringHelper(const QString &string) +{ + stringData = *(QStringData **)(&string); + stringData->ref.ref(); +} + + + + +QJsonValue::QJsonValue(QLatin1String s) + : d(0), t(String) +{ + + QString str(s); + stringDataFromQStringHelper(str); +} + + + + +QJsonValue::QJsonValue(const QJsonArray &a) + : d(a.d), t(Array) +{ + base = a.a; + if (d) + d->ref.ref(); +} + + + + +QJsonValue::QJsonValue(const QJsonObject &o) + : d(o.d), t(Object) +{ + base = o.o; + if (d) + d->ref.ref(); +} + + + + + +QJsonValue::~QJsonValue() +{ + if (t == String && stringData && !stringData->ref.deref()) + free(stringData); + + if (d && !d->ref.deref()) + delete d; +} + + + + +QJsonValue::QJsonValue(const QJsonValue &other) +{ + t = other.t; + d = other.d; + ui = other.ui; + if (d) + d->ref.ref(); + + if (t == String && stringData) + stringData->ref.ref(); +} + + + + +QJsonValue &QJsonValue::operator =(const QJsonValue &other) +{ + if (t == String && stringData && !stringData->ref.deref()) + free(stringData); + + t = other.t; + dbl = other.dbl; + + if (d != other.d) { + + if (d && !d->ref.deref()) + delete d; + d = other.d; + if (d) + d->ref.ref(); + + } + + if (t == String && stringData) + stringData->ref.ref(); + + return *this; +} +# 407 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonValue QJsonValue::fromVariant(const QVariant &variant) +{ + switch (variant.userType()) { + case QVariant::Bool: + return QJsonValue(variant.toBool()); + case QVariant::Int: + case QMetaType::Float: + case QVariant::Double: + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::UInt: + return QJsonValue(variant.toDouble()); + case QVariant::String: + return QJsonValue(variant.toString()); + case QVariant::StringList: + return QJsonValue(QJsonArray::fromStringList(variant.toStringList())); + case QVariant::List: + return QJsonValue(QJsonArray::fromVariantList(variant.toList())); + case QVariant::Map: + return QJsonValue(QJsonObject::fromVariantMap(variant.toMap())); + case QVariant::Hash: + return QJsonValue(QJsonObject::fromVariantHash(variant.toHash())); + + case QMetaType::QJsonValue: + return variant.toJsonValue(); + case QMetaType::QJsonObject: + return variant.toJsonObject(); + case QMetaType::QJsonArray: + return variant.toJsonArray(); + case QMetaType::QJsonDocument: { + QJsonDocument doc = variant.toJsonDocument(); + return doc.isArray() ? QJsonValue(doc.array()) : QJsonValue(doc.object()); + } + + default: + break; + } + QString string = variant.toString(); + if (string.isEmpty()) + return QJsonValue(); + return QJsonValue(string); +} +# 465 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QVariant QJsonValue::toVariant() const +{ + switch (t) { + case Bool: + return b; + case Double: + return dbl; + case String: + return toString(); + case Array: + return d ? + QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList() : + QVariantList(); + case Object: + return d ? + QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap() : + QVariantMap(); + case Null: + case Undefined: + break; + } + return QVariant(); +} +# 510 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonValue::Type QJsonValue::type() const +{ + return t; +} + + + + + + +bool QJsonValue::toBool(bool defaultValue) const +{ + if (t != Bool) + return defaultValue; + return b; +} + + + + + + + +int QJsonValue::toInt(int defaultValue) const +{ + if (t == Double && int(dbl) == dbl) + return int(dbl); + return defaultValue; +} + + + + + + +double QJsonValue::toDouble(double defaultValue) const +{ + if (t != Double) + return defaultValue; + return dbl; +} + + + + + + +QString QJsonValue::toString(const QString &defaultValue) const +{ + if (t != String) + return defaultValue; + stringData->ref.ref(); + QStringDataPtr holder = { stringData }; + return QString(holder); +} + + + + + + +QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const +{ + if (!d || t != Array) + return defaultValue; + + return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)); +} +# 586 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonArray QJsonValue::toArray() const +{ + return toArray(QJsonArray()); +} + + + + + + +QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const +{ + if (!d || t != Object) + return defaultValue; + + return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)); +} +# 611 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonObject QJsonValue::toObject() const +{ + return toObject(QJsonObject()); +} + + + + +bool QJsonValue::operator==(const QJsonValue &other) const +{ + if (t != other.t) + return false; + + switch (t) { + case Undefined: + case Null: + break; + case Bool: + return b == other.b; + case Double: + return dbl == other.dbl; + case String: + return toString() == other.toString(); + case Array: + if (base == other.base) + return true; + if (!base) + return !other.base->length; + if (!other.base) + return !base->length; + return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)) + == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base)); + case Object: + if (base == other.base) + return true; + if (!base) + return !other.base->length; + if (!other.base) + return !base->length; + return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)) + == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base)); + } + return true; +} + + + + +bool QJsonValue::operator!=(const QJsonValue &other) const +{ + return !(*this == other); +} + + + + +void QJsonValue::detach() +{ + if (!d) + return; + + QJsonPrivate::Data *x = d->clone(base); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; + base = static_cast<QJsonPrivate::Object *>(d->header->root()); +} +# 705 "/home/jeremy/src/qt/qt5/qtbase/src/corelib/json/qjsonvalue.cpp" +QJsonValueRef &QJsonValueRef::operator =(const QJsonValue &val) +{ + if (is_object) + o->setValueAt(index, val); + else + a->replace(index, val); + + return *this; +} + +QJsonValueRef &QJsonValueRef::operator =(const QJsonValueRef &ref) +{ + if (is_object) + o->setValueAt(index, ref); + else + a->replace(index, ref); + + return *this; +} + +QVariant QJsonValueRef::toVariant() const +{ + return toValue().toVariant(); +} + +QJsonArray QJsonValueRef::toArray() const +{ + return toValue().toArray(); +} + +QJsonObject QJsonValueRef::toObject() const +{ + return toValue().toObject(); +} + +QJsonValue QJsonValueRef::toValue() const +{ + if (!is_object) + return a->at(index); + return o->valueAt(index); +} + + +QDebug operator<<(QDebug dbg, const QJsonValue &o) +{ + QDebugStateSaver saver(dbg); + switch (o.t) { + case QJsonValue::Undefined: + dbg << "QJsonValue(undefined)"; + break; + case QJsonValue::Null: + dbg << "QJsonValue(null)"; + break; + case QJsonValue::Bool: + dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ')'; + break; + case QJsonValue::Double: + dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ')'; + break; + case QJsonValue::String: + dbg.nospace() << "QJsonValue(string, " << o.toString() << ')'; + break; + case QJsonValue::Array: + dbg.nospace() << "QJsonValue(array, "; + dbg << o.toArray(); + dbg << ')'; + break; + case QJsonValue::Object: + dbg.nospace() << "QJsonValue(object, "; + dbg << o.toObject(); + dbg << ')'; + break; + } + return dbg; +} + + + |