# 1 ".moc/moc_qqmllocale_p.cpp" # 1 ".moc/../qml/qqmllocale_p.h" 1 # 1 "../../include/QtQml/qqml.h" 1 # 1 "../../include/QtQml/../../src/qml/qml/qqml.h" 1 # 1 "../../include/QtQml/qqmlprivate.h" 1 # 1 "../../include/QtQml/../../src/qml/qml/qqmlprivate.h" 1 # 1 "../../include/QtQml/qtqmlglobal.h" 1 # 1 "../../include/QtQml/../../src/qml/qtqmlglobal.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 1 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 147 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 typedef long ptrdiff_t; # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 212 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 typedef unsigned long size_t; # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 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; # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qconfig.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qconfig.h" 1 # 20 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qconfig.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qconfig.h" 2 # 60 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qfeatures.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qfeatures.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qfeatures.h" 2 # 61 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsystemdetection.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsystemdetection.h" 1 # 184 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsystemdetection.h" # 204 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsystemdetection.h" # 264 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsystemdetection.h" # 273 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsystemdetection.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsystemdetection.h" 2 # 70 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qprocessordetection.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qprocessordetection.h" 1 # 82 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qprocessordetection.h" # 199 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qprocessordetection.h" # 303 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qprocessordetection.h" # 326 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qprocessordetection.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qprocessordetection.h" 2 # 71 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcompilerdetection.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" 1 # 151 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 178 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 187 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 207 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 433 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 503 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 520 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 632 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 697 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 753 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 770 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 814 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 828 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 889 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 901 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 930 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 952 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qcompilerdetection.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcompilerdetection.h" 2 # 72 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 79 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 1 "/usr/include/c++/4.8/algorithm" 1 3 # 59 "/usr/include/c++/4.8/algorithm" 3 3 # 1 "/usr/include/c++/4.8/utility" 1 3 # 59 "/usr/include/c++/4.8/utility" 3 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 4 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 2 3 # 1672 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1744 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1776 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1789 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1801 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 namespace std { typedef unsigned long size_t; typedef long ptrdiff_t; typedef decltype(nullptr) nullptr_t; } # 1910 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1958 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1978 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1986 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 2029 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 2055 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 2083 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/os_defines.h" 1 3 # 1 "/usr/include/features.h" 1 3 # 125 "/usr/include/features.h" 3 # 145 "/usr/include/features.h" 3 # 179 "/usr/include/features.h" 3 # 188 "/usr/include/features.h" 3 # 232 "/usr/include/features.h" 3 # 256 "/usr/include/features.h" 3 # 288 "/usr/include/features.h" 3 # 339 "/usr/include/features.h" 3 # 1 "/usr/include/stdc-predef.h" 1 3 # 343 "/usr/include/features.h" 2 3 # 1 "/usr/include/sys/cdefs.h" 1 3 # 48 "/usr/include/sys/cdefs.h" 3 # 69 "/usr/include/sys/cdefs.h" 3 # 79 "/usr/include/sys/cdefs.h" 3 # 104 "/usr/include/sys/cdefs.h" 3 # 119 "/usr/include/sys/cdefs.h" 3 # 129 "/usr/include/sys/cdefs.h" 3 # 147 "/usr/include/sys/cdefs.h" 3 # 164 "/usr/include/sys/cdefs.h" 3 # 192 "/usr/include/sys/cdefs.h" 3 # 225 "/usr/include/sys/cdefs.h" 3 # 252 "/usr/include/sys/cdefs.h" 3 # 282 "/usr/include/sys/cdefs.h" 3 # 305 "/usr/include/sys/cdefs.h" 3 # 338 "/usr/include/sys/cdefs.h" 3 # 376 "/usr/include/sys/cdefs.h" 3 # 384 "/usr/include/sys/cdefs.h" 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 386 "/usr/include/sys/cdefs.h" 2 3 # 418 "/usr/include/sys/cdefs.h" 3 # 365 "/usr/include/features.h" 2 3 # 1 "/usr/include/gnu/stubs.h" 1 3 # 1 "/usr/include/gnu/stubs-64.h" 1 3 # 11 "/usr/include/gnu/stubs.h" 2 3 # 389 "/usr/include/features.h" 2 3 # 40 "/usr/include/c++/4.8/x86_64-suse-linux/bits/os_defines.h" 2 3 # 2098 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 2 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/cpu_defines.h" 1 3 # 2101 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++config.h" 2 3 # 69 "/usr/include/c++/4.8/utility" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_relops.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { namespace rel_ops { template inline bool operator!=(const _Tp& __x, const _Tp& __y) { return !(__x == __y); } template inline bool operator>(const _Tp& __x, const _Tp& __y) { return __y < __x; } template inline bool operator<=(const _Tp& __x, const _Tp& __y) { return !(__y < __x); } template inline bool operator>=(const _Tp& __x, const _Tp& __y) { return !(__x < __y); } } } # 70 "/usr/include/c++/4.8/utility" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_pair.h" 1 3 # 1 "/usr/include/c++/4.8/bits/move.h" 1 3 # 1 "/usr/include/c++/4.8/bits/concept_check.h" 1 3 # 34 "/usr/include/c++/4.8/bits/concept_check.h" 3 3 # 79 "/usr/include/c++/4.8/bits/concept_check.h" 3 # 35 "/usr/include/c++/4.8/bits/move.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template inline _Tp* __addressof(_Tp& __r) noexcept { return reinterpret_cast<_Tp*> (&const_cast(reinterpret_cast(__r))); } } # 1 "/usr/include/c++/4.8/type_traits" 1 3 # 33 "/usr/include/c++/4.8/type_traits" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct integral_constant { static constexpr _Tp value = __v; typedef _Tp value_type; typedef integral_constant<_Tp, __v> type; constexpr operator value_type() { return value; } }; template constexpr _Tp integral_constant<_Tp, __v>::value; typedef integral_constant true_type; typedef integral_constant false_type; template struct conditional; template struct __or_; template<> struct __or_<> : public false_type { }; template struct __or_<_B1> : public _B1 { }; template struct __or_<_B1, _B2> : public conditional<_B1::value, _B1, _B2>::type { }; template struct __or_<_B1, _B2, _B3, _Bn...> : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type { }; template struct __and_; template<> struct __and_<> : public true_type { }; template struct __and_<_B1> : public _B1 { }; template struct __and_<_B1, _B2> : public conditional<_B1::value, _B2, _B1>::type { }; template struct __and_<_B1, _B2, _B3, _Bn...> : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type { }; template struct __not_ : public integral_constant { }; struct __sfinae_types { typedef char __one; typedef struct { char __arr[2]; } __two; }; template struct __success_type { typedef _Tp type; }; struct __failure_type { }; template struct remove_cv; template struct __is_void_helper : public false_type { }; template<> struct __is_void_helper : public true_type { }; template struct is_void : public integral_constant::type>::value)> { }; template struct __is_integral_helper : public false_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; template<> struct __is_integral_helper : public true_type { }; # 243 "/usr/include/c++/4.8/type_traits" 3 template struct is_integral : public integral_constant::type>::value)> { }; template struct __is_floating_point_helper : public false_type { }; template<> struct __is_floating_point_helper : public true_type { }; template<> struct __is_floating_point_helper : public true_type { }; template<> struct __is_floating_point_helper : public true_type { }; template struct is_floating_point : public integral_constant::type>::value)> { }; template struct is_array : public false_type { }; template struct is_array<_Tp[_Size]> : public true_type { }; template struct is_array<_Tp[]> : public true_type { }; template struct __is_pointer_helper : public false_type { }; template struct __is_pointer_helper<_Tp*> : public true_type { }; template struct is_pointer : public integral_constant::type>::value)> { }; template struct is_lvalue_reference : public false_type { }; template struct is_lvalue_reference<_Tp&> : public true_type { }; template struct is_rvalue_reference : public false_type { }; template struct is_rvalue_reference<_Tp&&> : public true_type { }; template struct is_function; template struct __is_member_object_pointer_helper : public false_type { }; template struct __is_member_object_pointer_helper<_Tp _Cp::*> : public integral_constant::value> { }; template struct is_member_object_pointer : public integral_constant::type>::value)> { }; template struct __is_member_function_pointer_helper : public false_type { }; template struct __is_member_function_pointer_helper<_Tp _Cp::*> : public integral_constant::value> { }; template struct is_member_function_pointer : public integral_constant::type>::value)> { }; template struct is_enum : public integral_constant { }; template struct is_union : public integral_constant { }; template struct is_class : public integral_constant { }; template struct is_function : public false_type { }; template struct is_function<_Res(_ArgTypes...)> : public true_type { }; template struct is_function<_Res(_ArgTypes......)> : public true_type { }; template struct is_function<_Res(_ArgTypes...) const> : public true_type { }; template struct is_function<_Res(_ArgTypes......) const> : public true_type { }; template struct is_function<_Res(_ArgTypes...) volatile> : public true_type { }; template struct is_function<_Res(_ArgTypes......) volatile> : public true_type { }; template struct is_function<_Res(_ArgTypes...) const volatile> : public true_type { }; template struct is_function<_Res(_ArgTypes......) const volatile> : public true_type { }; template struct __is_nullptr_t_helper : public false_type { }; template<> struct __is_nullptr_t_helper : public true_type { }; template struct __is_nullptr_t : public integral_constant::type>::value)> { }; template struct is_reference : public __or_, is_rvalue_reference<_Tp>>::type { }; template struct is_arithmetic : public __or_, is_floating_point<_Tp>>::type { }; template struct is_fundamental : public __or_, is_void<_Tp>, __is_nullptr_t<_Tp>>::type { }; template struct is_object : public __not_<__or_, is_reference<_Tp>, is_void<_Tp>>>::type { }; template struct is_member_pointer; template struct is_scalar : public __or_, is_enum<_Tp>, is_pointer<_Tp>, is_member_pointer<_Tp>, __is_nullptr_t<_Tp>>::type { }; template struct is_compound : public integral_constant::value> { }; template struct __is_member_pointer_helper : public false_type { }; template struct __is_member_pointer_helper<_Tp _Cp::*> : public true_type { }; template struct is_member_pointer : public integral_constant::type>::value)> { }; template struct is_const : public false_type { }; template struct is_const<_Tp const> : public true_type { }; template struct is_volatile : public false_type { }; template struct is_volatile<_Tp volatile> : public true_type { }; template struct is_trivial : public integral_constant { }; template struct is_standard_layout : public integral_constant { }; template struct is_pod : public integral_constant { }; template struct is_literal_type : public integral_constant { }; template struct is_empty : public integral_constant { }; template struct is_polymorphic : public integral_constant { }; template struct is_abstract : public integral_constant { }; template::value, bool = is_floating_point<_Tp>::value> struct __is_signed_helper : public false_type { }; template struct __is_signed_helper<_Tp, false, true> : public true_type { }; template struct __is_signed_helper<_Tp, true, false> : public integral_constant(_Tp(-1) < _Tp(0))> { }; template struct is_signed : public integral_constant::value> { }; template struct is_unsigned : public __and_, __not_>>::type { }; template struct add_rvalue_reference; template typename add_rvalue_reference<_Tp>::type declval() noexcept; template struct extent; template struct remove_all_extents; template struct __is_array_known_bounds : public integral_constant::value > 0)> { }; template struct __is_array_unknown_bounds : public __and_, __not_>>::type { }; struct __do_is_destructible_impl { template().~_Tp())> static true_type __test(int); template static false_type __test(...); }; template struct __is_destructible_impl : public __do_is_destructible_impl { typedef decltype(__test<_Tp>(0)) type; }; template, __is_array_unknown_bounds<_Tp>, is_function<_Tp>>::value, bool = __or_, is_scalar<_Tp>>::value> struct __is_destructible_safe; template struct __is_destructible_safe<_Tp, false, false> : public __is_destructible_impl::type>::type { }; template struct __is_destructible_safe<_Tp, true, false> : public false_type { }; template struct __is_destructible_safe<_Tp, false, true> : public true_type { }; template struct is_destructible : public integral_constant::value)> { }; struct __do_is_nt_destructible_impl { template static integral_constant().~_Tp())> __test(int); template static false_type __test(...); }; template struct __is_nt_destructible_impl : public __do_is_nt_destructible_impl { typedef decltype(__test<_Tp>(0)) type; }; template, __is_array_unknown_bounds<_Tp>, is_function<_Tp>>::value, bool = __or_, is_scalar<_Tp>>::value> struct __is_nt_destructible_safe; template struct __is_nt_destructible_safe<_Tp, false, false> : public __is_nt_destructible_impl::type>::type { }; template struct __is_nt_destructible_safe<_Tp, true, false> : public false_type { }; template struct __is_nt_destructible_safe<_Tp, false, true> : public true_type { }; template struct is_nothrow_destructible : public integral_constant::value)> { }; struct __do_is_default_constructible_impl { template static true_type __test(int); template static false_type __test(...); }; template struct __is_default_constructible_impl : public __do_is_default_constructible_impl { typedef decltype(__test<_Tp>(0)) type; }; template struct __is_default_constructible_atom : public __and_<__not_>, __is_default_constructible_impl<_Tp>>::type { }; template::value> struct __is_default_constructible_safe; template struct __is_default_constructible_safe<_Tp, true> : public __and_<__is_array_known_bounds<_Tp>, __is_default_constructible_atom::type>>::type { }; template struct __is_default_constructible_safe<_Tp, false> : public __is_default_constructible_atom<_Tp>::type { }; template struct is_default_constructible : public integral_constant::value)> { }; struct __do_is_static_castable_impl { template(declval<_From>()))> static true_type __test(int); template static false_type __test(...); }; template struct __is_static_castable_impl : public __do_is_static_castable_impl { typedef decltype(__test<_From, _To>(0)) type; }; template struct __is_static_castable_safe : public __is_static_castable_impl<_From, _To>::type { }; template struct __is_static_castable : public integral_constant::value)> { }; struct __do_is_direct_constructible_impl { template()))> static true_type __test(int); template static false_type __test(...); }; template struct __is_direct_constructible_impl : public __do_is_direct_constructible_impl { typedef decltype(__test<_Tp, _Arg>(0)) type; }; template struct __is_direct_constructible_new_safe : public __and_, __is_direct_constructible_impl<_Tp, _Arg>>::type { }; template struct is_same; template struct is_base_of; template struct remove_reference; template, is_function<_From>>>::value> struct __is_base_to_derived_ref; template struct __is_base_to_derived_ref<_From, _To, true> { typedef typename remove_cv::type>::type __src_t; typedef typename remove_cv::type>::type __dst_t; typedef __and_<__not_>, is_base_of<__src_t, __dst_t>> type; static constexpr bool value = type::value; }; template struct __is_base_to_derived_ref<_From, _To, false> : public false_type { }; template, is_rvalue_reference<_To>>::value> struct __is_lvalue_to_rvalue_ref; template struct __is_lvalue_to_rvalue_ref<_From, _To, true> { typedef typename remove_cv::type>::type __src_t; typedef typename remove_cv::type>::type __dst_t; typedef __and_<__not_>, __or_, is_base_of<__dst_t, __src_t>>> type; static constexpr bool value = type::value; }; template struct __is_lvalue_to_rvalue_ref<_From, _To, false> : public false_type { }; template struct __is_direct_constructible_ref_cast : public __and_<__is_static_castable<_Arg, _Tp>, __not_<__or_<__is_base_to_derived_ref<_Arg, _Tp>, __is_lvalue_to_rvalue_ref<_Arg, _Tp> >>>::type { }; template struct __is_direct_constructible_new : public conditional::value, __is_direct_constructible_ref_cast<_Tp, _Arg>, __is_direct_constructible_new_safe<_Tp, _Arg> >::type { }; template struct __is_direct_constructible : public integral_constant::value)> { }; struct __do_is_nary_constructible_impl { template()...))> static true_type __test(int); template static false_type __test(...); }; template struct __is_nary_constructible_impl : public __do_is_nary_constructible_impl { typedef decltype(__test<_Tp, _Args...>(0)) type; }; template struct __is_nary_constructible : public __is_nary_constructible_impl<_Tp, _Args...>::type { static_assert(sizeof...(_Args) > 1, "Only useful for > 1 arguments"); }; template struct __is_constructible_impl : public __is_nary_constructible<_Tp, _Args...> { }; template struct __is_constructible_impl<_Tp, _Arg> : public __is_direct_constructible<_Tp, _Arg> { }; template struct __is_constructible_impl<_Tp> : public is_default_constructible<_Tp> { }; template struct is_constructible : public integral_constant::value)> { }; template::value> struct __is_copy_constructible_impl; template struct __is_copy_constructible_impl<_Tp, true> : public false_type { }; template struct __is_copy_constructible_impl<_Tp, false> : public is_constructible<_Tp, const _Tp&> { }; template struct is_copy_constructible : public __is_copy_constructible_impl<_Tp> { }; template::value> struct __is_move_constructible_impl; template struct __is_move_constructible_impl<_Tp, true> : public false_type { }; template struct __is_move_constructible_impl<_Tp, false> : public is_constructible<_Tp, _Tp&&> { }; template struct is_move_constructible : public __is_move_constructible_impl<_Tp> { }; template struct __is_nt_default_constructible_atom : public integral_constant { }; template::value> struct __is_nt_default_constructible_impl; template struct __is_nt_default_constructible_impl<_Tp, true> : public __and_<__is_array_known_bounds<_Tp>, __is_nt_default_constructible_atom::type>>::type { }; template struct __is_nt_default_constructible_impl<_Tp, false> : public __is_nt_default_constructible_atom<_Tp> { }; template struct is_nothrow_default_constructible : public __and_, __is_nt_default_constructible_impl<_Tp>>::type { }; template struct __is_nt_constructible_impl : public integral_constant()...))> { }; template struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant(declval<_Arg>()))> { }; template struct __is_nt_constructible_impl<_Tp> : public is_nothrow_default_constructible<_Tp> { }; template struct is_nothrow_constructible : public __and_, __is_nt_constructible_impl<_Tp, _Args...>>::type { }; template::value> struct __is_nothrow_copy_constructible_impl; template struct __is_nothrow_copy_constructible_impl<_Tp, true> : public false_type { }; template struct __is_nothrow_copy_constructible_impl<_Tp, false> : public is_nothrow_constructible<_Tp, const _Tp&> { }; template struct is_nothrow_copy_constructible : public __is_nothrow_copy_constructible_impl<_Tp> { }; template::value> struct __is_nothrow_move_constructible_impl; template struct __is_nothrow_move_constructible_impl<_Tp, true> : public false_type { }; template struct __is_nothrow_move_constructible_impl<_Tp, false> : public is_nothrow_constructible<_Tp, _Tp&&> { }; template struct is_nothrow_move_constructible : public __is_nothrow_move_constructible_impl<_Tp> { }; template class __is_assignable_helper : public __sfinae_types { template static decltype(declval<_Tp1>() = declval<_Up1>(), __one()) __test(int); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp, _Up>(0)) == 1; }; template struct is_assignable : public integral_constant::value> { }; template::value> struct __is_copy_assignable_impl; template struct __is_copy_assignable_impl<_Tp, true> : public false_type { }; template struct __is_copy_assignable_impl<_Tp, false> : public is_assignable<_Tp&, const _Tp&> { }; template struct is_copy_assignable : public __is_copy_assignable_impl<_Tp> { }; template::value> struct __is_move_assignable_impl; template struct __is_move_assignable_impl<_Tp, true> : public false_type { }; template struct __is_move_assignable_impl<_Tp, false> : public is_assignable<_Tp&, _Tp&&> { }; template struct is_move_assignable : public __is_move_assignable_impl<_Tp> { }; template struct __is_nt_assignable_impl : public integral_constant() = declval<_Up>())> { }; template struct is_nothrow_assignable : public __and_, __is_nt_assignable_impl<_Tp, _Up>>::type { }; template::value> struct __is_nt_copy_assignable_impl; template struct __is_nt_copy_assignable_impl<_Tp, true> : public false_type { }; template struct __is_nt_copy_assignable_impl<_Tp, false> : public is_nothrow_assignable<_Tp&, const _Tp&> { }; template struct is_nothrow_copy_assignable : public __is_nt_copy_assignable_impl<_Tp> { }; template::value> struct __is_nt_move_assignable_impl; template struct __is_nt_move_assignable_impl<_Tp, true> : public false_type { }; template struct __is_nt_move_assignable_impl<_Tp, false> : public is_nothrow_assignable<_Tp&, _Tp&&> { }; template struct is_nothrow_move_assignable : public __is_nt_move_assignable_impl<_Tp> { }; template struct is_trivially_destructible : public __and_, integral_constant>::type { }; template struct has_trivial_default_constructor : public integral_constant { }; template struct has_trivial_copy_constructor : public integral_constant { }; template struct has_trivial_copy_assign : public integral_constant { }; template struct has_virtual_destructor : public integral_constant { }; template struct alignment_of : public integral_constant { }; template struct rank : public integral_constant { }; template struct rank<_Tp[_Size]> : public integral_constant::value> { }; template struct rank<_Tp[]> : public integral_constant::value> { }; template struct extent : public integral_constant { }; template struct extent<_Tp[_Size], _Uint> : public integral_constant::value> { }; template struct extent<_Tp[], _Uint> : public integral_constant::value> { }; template struct is_same : public false_type { }; template struct is_same<_Tp, _Tp> : public true_type { }; template struct is_base_of : public integral_constant { }; template, is_function<_To>, is_array<_To>>::value> struct __is_convertible_helper { static constexpr bool value = is_void<_To>::value; }; template class __is_convertible_helper<_From, _To, false> : public __sfinae_types { template static void __test_aux(_To1); template static decltype(__test_aux<_To1>(std::declval<_From1>()), __one()) __test(int); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_From, _To>(0)) == 1; }; template struct is_convertible : public integral_constant::value> { }; template struct remove_const { typedef _Tp type; }; template struct remove_const<_Tp const> { typedef _Tp type; }; template struct remove_volatile { typedef _Tp type; }; template struct remove_volatile<_Tp volatile> { typedef _Tp type; }; template struct remove_cv { typedef typename remove_const::type>::type type; }; template struct add_const { typedef _Tp const type; }; template struct add_volatile { typedef _Tp volatile type; }; template struct add_cv { typedef typename add_const::type>::type type; }; template struct remove_reference { typedef _Tp type; }; template struct remove_reference<_Tp&> { typedef _Tp type; }; template struct remove_reference<_Tp&&> { typedef _Tp type; }; template>, __not_>>::value, bool = is_rvalue_reference<_Tp>::value> struct __add_lvalue_reference_helper { typedef _Tp type; }; template struct __add_lvalue_reference_helper<_Tp, true, false> { typedef _Tp& type; }; template struct __add_lvalue_reference_helper<_Tp, false, true> { typedef typename remove_reference<_Tp>::type& type; }; template struct add_lvalue_reference : public __add_lvalue_reference_helper<_Tp> { }; template>, __not_>>::value> struct __add_rvalue_reference_helper { typedef _Tp type; }; template struct __add_rvalue_reference_helper<_Tp, true> { typedef _Tp&& type; }; template struct add_rvalue_reference : public __add_rvalue_reference_helper<_Tp> { }; template struct __cv_selector; template struct __cv_selector<_Unqualified, false, false> { typedef _Unqualified __type; }; template struct __cv_selector<_Unqualified, false, true> { typedef volatile _Unqualified __type; }; template struct __cv_selector<_Unqualified, true, false> { typedef const _Unqualified __type; }; template struct __cv_selector<_Unqualified, true, true> { typedef const volatile _Unqualified __type; }; template::value, bool _IsVol = is_volatile<_Qualified>::value> class __match_cv_qualifiers { typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; public: typedef typename __match::__type __type; }; template struct __make_unsigned { typedef _Tp __type; }; template<> struct __make_unsigned { typedef unsigned char __type; }; template<> struct __make_unsigned { typedef unsigned char __type; }; template<> struct __make_unsigned { typedef unsigned short __type; }; template<> struct __make_unsigned { typedef unsigned int __type; }; template<> struct __make_unsigned { typedef unsigned long __type; }; template<> struct __make_unsigned { typedef unsigned long long __type; }; template::value, bool _IsEnum = is_enum<_Tp>::value> class __make_unsigned_selector; template class __make_unsigned_selector<_Tp, true, false> { typedef __make_unsigned::type> __unsignedt; typedef typename __unsignedt::__type __unsigned_type; typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; public: typedef typename __cv_unsigned::__type __type; }; template class __make_unsigned_selector<_Tp, false, true> { 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 struct make_unsigned { typedef typename __make_unsigned_selector<_Tp>::__type type; }; template<> struct make_unsigned; template struct __make_signed { typedef _Tp __type; }; template<> struct __make_signed { typedef signed char __type; }; template<> struct __make_signed { typedef signed char __type; }; template<> struct __make_signed { typedef signed short __type; }; template<> struct __make_signed { typedef signed int __type; }; template<> struct __make_signed { typedef signed long __type; }; template<> struct __make_signed { typedef signed long long __type; }; template::value, bool _IsEnum = is_enum<_Tp>::value> class __make_signed_selector; template class __make_signed_selector<_Tp, true, false> { typedef __make_signed::type> __signedt; typedef typename __signedt::__type __signed_type; typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; public: typedef typename __cv_signed::__type __type; }; template class __make_signed_selector<_Tp, false, true> { typedef 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 struct make_signed { typedef typename __make_signed_selector<_Tp>::__type type; }; template<> struct make_signed; template struct remove_extent { typedef _Tp type; }; template struct remove_extent<_Tp[_Size]> { typedef _Tp type; }; template struct remove_extent<_Tp[]> { typedef _Tp type; }; template struct remove_all_extents { typedef _Tp type; }; template struct remove_all_extents<_Tp[_Size]> { typedef typename remove_all_extents<_Tp>::type type; }; template struct remove_all_extents<_Tp[]> { typedef typename remove_all_extents<_Tp>::type type; }; template struct __remove_pointer_helper { typedef _Tp type; }; template struct __remove_pointer_helper<_Tp, _Up*> { typedef _Up type; }; template struct remove_pointer : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> { }; template struct add_pointer { typedef typename remove_reference<_Tp>::type* type; }; template struct __aligned_storage_msa { union __type { unsigned char __data[_Len]; struct __attribute__((__aligned__)) { } __align; }; }; template::__type)> struct aligned_storage { union type { unsigned char __data[_Len]; struct __attribute__((__aligned__((_Align)))) { } __align; }; }; template::value, bool _IsFunction = is_function<_Up>::value> struct __decay_selector; template struct __decay_selector<_Up, false, false> { typedef typename remove_cv<_Up>::type __type; }; template struct __decay_selector<_Up, true, false> { typedef typename remove_extent<_Up>::type* __type; }; template struct __decay_selector<_Up, false, true> { typedef typename add_pointer<_Up>::type __type; }; template class decay { typedef typename remove_reference<_Tp>::type __remove_type; public: typedef typename __decay_selector<__remove_type>::__type type; }; template class reference_wrapper; template struct __strip_reference_wrapper { typedef _Tp __type; }; template struct __strip_reference_wrapper > { typedef _Tp& __type; }; template struct __strip_reference_wrapper > { typedef _Tp& __type; }; template struct __decay_and_strip { typedef typename __strip_reference_wrapper< typename decay<_Tp>::type>::__type __type; }; template struct enable_if { }; template struct enable_if { typedef _Tp type; }; template using _Require = typename enable_if<__and_<_Cond...>::value>::type; template struct conditional { typedef _Iftrue type; }; template struct conditional { typedef _Iffalse type; }; template struct common_type; struct __do_common_type_impl { template static __success_type() : std::declval<_Up>())>::type> _S_test(int); template static __failure_type _S_test(...); }; template struct __common_type_impl : private __do_common_type_impl { typedef decltype(_S_test<_Tp, _Up>(0)) type; }; struct __do_member_type_wrapper { template static __success_type _S_test(int); template static __failure_type _S_test(...); }; template struct __member_type_wrapper : private __do_member_type_wrapper { typedef decltype(_S_test<_Tp>(0)) type; }; template struct __expanded_common_type_wrapper { typedef common_type type; }; template struct __expanded_common_type_wrapper<__failure_type, _Args...> { typedef __failure_type type; }; template struct common_type<_Tp> { typedef typename decay<_Tp>::type type; }; template struct common_type<_Tp, _Up> : public __common_type_impl<_Tp, _Up>::type { }; template struct common_type<_Tp, _Up, _Vp...> : public __expanded_common_type_wrapper>::type, _Vp...>::type { }; template struct underlying_type { typedef __underlying_type(_Tp) type; }; template struct __declval_protector { static const bool __stop = false; static typename add_rvalue_reference<_Tp>::type __delegate(); }; template inline typename add_rvalue_reference<_Tp>::type declval() noexcept { static_assert(__declval_protector<_Tp>::__stop, "declval() must not be used!"); return __declval_protector<_Tp>::__delegate(); } template class result_of; struct __result_of_memfun_ref_impl { template static __success_type().*std::declval<_Fp>())(std::declval<_Args>()...) )> _S_test(int); template static __failure_type _S_test(...); }; template struct __result_of_memfun_ref : private __result_of_memfun_ref_impl { typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; }; struct __result_of_memfun_deref_impl { template static __success_type()).*std::declval<_Fp>())(std::declval<_Args>()...) )> _S_test(int); template static __failure_type _S_test(...); }; template struct __result_of_memfun_deref : private __result_of_memfun_deref_impl { typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; }; struct __result_of_memobj_ref_impl { template static __success_type().*std::declval<_Fp>() )> _S_test(int); template static __failure_type _S_test(...); }; template struct __result_of_memobj_ref : private __result_of_memobj_ref_impl { typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; }; struct __result_of_memobj_deref_impl { template static __success_type()).*std::declval<_Fp>() )> _S_test(int); template static __failure_type _S_test(...); }; template struct __result_of_memobj_deref : private __result_of_memobj_deref_impl { typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; }; template struct __result_of_memobj; template struct __result_of_memobj<_Res _Class::*, _Arg> { typedef typename remove_cv::type>::type _Argval; typedef _Res _Class::* _MemPtr; typedef typename conditional<__or_, is_base_of<_Class, _Argval>>::value, __result_of_memobj_ref<_MemPtr, _Arg>, __result_of_memobj_deref<_MemPtr, _Arg> >::type::type type; }; template struct __result_of_memfun; template struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> { typedef typename remove_cv::type>::type _Argval; typedef _Res _Class::* _MemPtr; typedef typename conditional<__or_, is_base_of<_Class, _Argval>>::value, __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, __result_of_memfun_deref<_MemPtr, _Arg, _Args...> >::type::type type; }; template struct __result_of_impl { typedef __failure_type type; }; template struct __result_of_impl : public __result_of_memobj::type, _Arg> { }; template struct __result_of_impl : public __result_of_memfun::type, _Arg, _Args...> { }; struct __result_of_other_impl { template static __success_type()(std::declval<_Args>()...) )> _S_test(int); template static __failure_type _S_test(...); }; template struct __result_of_impl : private __result_of_other_impl { typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; }; template 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 { }; # 2068 "/usr/include/c++/4.8/type_traits" 3 } # 58 "/usr/include/c++/4.8/bits/move.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template constexpr _Tp&& forward(typename std::remove_reference<_Tp>::type& __t) noexcept { return static_cast<_Tp&&>(__t); } template 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 constexpr typename std::remove_reference<_Tp>::type&& move(_Tp&& __t) noexcept { return static_cast::type&&>(__t); } template struct __move_if_noexcept_cond : public __and_<__not_>, is_copy_constructible<_Tp>>::type { }; template inline constexpr typename conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type move_if_noexcept(_Tp& __x) noexcept { return std::move(__x); } template inline _Tp* addressof(_Tp& __r) noexcept { return std::__addressof(__r); } } # 148 "/usr/include/c++/4.8/bits/move.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { template inline void swap(_Tp& __a, _Tp& __b) noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) { _Tp __tmp = std::move(__a); __a = std::move(__b); __b = std::move(__tmp); } template 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 "/usr/include/c++/4.8/bits/stl_pair.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { struct piecewise_construct_t { }; constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); template class tuple; template struct _Index_tuple; template 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, is_convertible>::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::value>::type> constexpr pair(_U1&& __x, const _T2& __y) : first(std::forward<_U1>(__x)), second(__y) { } template::value>::type> constexpr pair(const _T1& __x, _U2&& __y) : first(__x), second(std::forward<_U2>(__y)) { } template, is_convertible<_U2, _T2>>::value>::type> constexpr pair(_U1&& __x, _U2&& __y) : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } template, 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 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<_T2>>::value) { first = std::forward(__p.first); second = std::forward(__p.second); return *this; } template pair& operator=(const pair<_U1, _U2>& __p) { first = __p.first; second = __p.second; return *this; } template 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 pair(tuple<_Args1...>&, tuple<_Args2...>&, _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); }; template inline constexpr bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __x.first == __y.first && __x.second == __y.second; } template 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 inline constexpr bool operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x == __y); } template inline constexpr bool operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __y < __x; } template inline constexpr bool operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__y < __x); } template inline constexpr bool operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x < __y); } template inline void swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) noexcept(noexcept(__x.swap(__y))) { __x.swap(__y); } template constexpr pair::__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)); } # 289 "/usr/include/c++/4.8/bits/stl_pair.h" 3 } # 71 "/usr/include/c++/4.8/utility" 2 3 # 1 "/usr/include/c++/4.8/initializer_list" 1 3 # 34 "/usr/include/c++/4.8/initializer_list" 3 3 #pragma GCC visibility push(default) namespace std { template 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 constexpr const _Tp* begin(initializer_list<_Tp> __ils) noexcept { return __ils.begin(); } template constexpr const _Tp* end(initializer_list<_Tp> __ils) noexcept { return __ils.end(); } } #pragma GCC visibility pop # 75 "/usr/include/c++/4.8/utility" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class tuple_size; template class tuple_element; template struct tuple_size> : public integral_constant { }; template struct tuple_element<0, std::pair<_Tp1, _Tp2>> { typedef _Tp1 type; }; template struct tuple_element<1, std::pair<_Tp1, _Tp2>> { typedef _Tp2 type; }; template struct __pair_get; template<> struct __pair_get<0> { template static constexpr _Tp1& __get(std::pair<_Tp1, _Tp2>& __pair) noexcept { return __pair.first; } template static constexpr _Tp1&& __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept { return std::forward<_Tp1>(__pair.first); } template static constexpr const _Tp1& __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept { return __pair.first; } }; template<> struct __pair_get<1> { template static constexpr _Tp2& __get(std::pair<_Tp1, _Tp2>& __pair) noexcept { return __pair.second; } template static constexpr _Tp2&& __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept { return std::forward<_Tp2>(__pair.second); } template static constexpr const _Tp2& __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept { return __pair.second; } }; template constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& get(std::pair<_Tp1, _Tp2>& __in) noexcept { return __pair_get<_Int>::__get(__in); } template constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& get(std::pair<_Tp1, _Tp2>&& __in) noexcept { return __pair_get<_Int>::__move_get(std::move(__in)); } template constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& get(const std::pair<_Tp1, _Tp2>& __in) noexcept { return __pair_get<_Int>::__const_get(__in); } } # 61 "/usr/include/c++/4.8/algorithm" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_algobase.h" 1 3 # 1 "/usr/include/c++/4.8/bits/functexcept.h" 1 3 # 1 "/usr/include/c++/4.8/bits/exception_defines.h" 1 3 # 44 "/usr/include/c++/4.8/bits/exception_defines.h" 3 # 41 "/usr/include/c++/4.8/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_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 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/bits/cpp_type_traits.h" 1 3 # 36 "/usr/include/c++/4.8/bits/cpp_type_traits.h" 3 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template class __normal_iterator; } namespace std __attribute__ ((__visibility__ ("default"))) { struct __true_type { }; struct __false_type { }; template struct __truth_type { typedef __false_type __type; }; template<> struct __truth_type { typedef __true_type __type; }; template struct __traitor { enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; typedef typename __truth_type<__value>::__type __type; }; template struct __are_same { enum { __value = 0 }; typedef __false_type __type; }; template struct __are_same<_Tp, _Tp> { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_void { enum { __value = 0 }; typedef __false_type __type; }; template<> struct __is_void { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_integer { enum { __value = 0 }; typedef __false_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_floating { enum { __value = 0 }; typedef __false_type __type; }; template<> struct __is_floating { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_floating { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_floating { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_pointer { enum { __value = 0 }; typedef __false_type __type; }; template struct __is_pointer<_Tp*> { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_normal_iterator { enum { __value = 0 }; typedef __false_type __type; }; template struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, _Container> > { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_arithmetic : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > { }; template struct __is_fundamental : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > { }; template struct __is_scalar : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > { }; template struct __is_char { enum { __value = 0 }; typedef __false_type __type; }; template<> struct __is_char { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_char { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_byte { enum { __value = 0 }; typedef __false_type __type; }; template<> struct __is_byte { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_byte { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_byte { enum { __value = 1 }; typedef __true_type __type; }; template struct __is_move_iterator { enum { __value = 0 }; typedef __false_type __type; }; template class move_iterator; template struct __is_move_iterator< move_iterator<_Iterator> > { enum { __value = 1 }; typedef __true_type __type; }; } # 62 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/ext/type_traits.h" 1 3 # 33 "/usr/include/c++/4.8/ext/type_traits.h" 3 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct __enable_if { }; template struct __enable_if { typedef _Tp __type; }; template struct __conditional_type { typedef _Iftrue __type; }; template struct __conditional_type { typedef _Iffalse __type; }; template struct __add_unsigned { private: typedef __enable_if::__value, _Tp> __if_type; public: typedef typename __if_type::__type __type; }; template<> struct __add_unsigned { typedef unsigned char __type; }; template<> struct __add_unsigned { typedef unsigned char __type; }; template<> struct __add_unsigned { typedef unsigned short __type; }; template<> struct __add_unsigned { typedef unsigned int __type; }; template<> struct __add_unsigned { typedef unsigned long __type; }; template<> struct __add_unsigned { typedef unsigned long long __type; }; template<> struct __add_unsigned; template<> struct __add_unsigned; template struct __remove_unsigned { private: typedef __enable_if::__value, _Tp> __if_type; public: typedef typename __if_type::__type __type; }; template<> struct __remove_unsigned { typedef signed char __type; }; template<> struct __remove_unsigned { typedef signed char __type; }; template<> struct __remove_unsigned { typedef short __type; }; template<> struct __remove_unsigned { typedef int __type; }; template<> struct __remove_unsigned { typedef long __type; }; template<> struct __remove_unsigned { typedef long long __type; }; template<> struct __remove_unsigned; template<> struct __remove_unsigned; template inline bool __is_null_pointer(_Type* __ptr) { return __ptr == 0; } template inline bool __is_null_pointer(_Type) { return false; } template::__value> struct __promote { typedef double __type; }; template struct __promote<_Tp, false> { }; template<> struct __promote { typedef long double __type; }; template<> struct __promote { typedef double __type; }; template<> struct __promote { typedef float __type; }; template::__type, typename _Up2 = typename __promote<_Up>::__type> struct __promote_2 { typedef __typeof__(_Tp2() + _Up2()) __type; }; template::__type, typename _Up2 = typename __promote<_Up>::__type, typename _Vp2 = typename __promote<_Vp>::__type> struct __promote_3 { typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; }; template::__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 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/ext/numeric_traits.h" 1 3 # 33 "/usr/include/c++/4.8/ext/numeric_traits.h" 3 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template 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 const _Value __numeric_traits_integer<_Value>::__min; template const _Value __numeric_traits_integer<_Value>::__max; template const bool __numeric_traits_integer<_Value>::__is_signed; template const int __numeric_traits_integer<_Value>::__digits; template struct __numeric_traits_floating { static const int __max_digits10 = (2 + (std::__are_same<_Value, float> ::__value ? 24 : std::__are_same<_Value, double> ::__value ? 53 : 64) * 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 : 18); static const int __max_exponent10 = (std::__are_same<_Value, float> ::__value ? 38 : std::__are_same<_Value, double> ::__value ? 308 : 4932); }; template const int __numeric_traits_floating<_Value>::__max_digits10; template const bool __numeric_traits_floating<_Value>::__is_signed; template const int __numeric_traits_floating<_Value>::__digits10; template const int __numeric_traits_floating<_Value>::__max_exponent10; template struct __numeric_traits : public __conditional_type::__value, __numeric_traits_integer<_Value>, __numeric_traits_floating<_Value> >::__type { }; } # 64 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 1 3 # 63 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { 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 { }; template struct iterator { typedef _Category iterator_category; typedef _Tp value_type; typedef _Distance difference_type; typedef _Pointer pointer; typedef _Reference reference; }; template class __has_iterator_category_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_iterator_category : integral_constant ::type> ::value> { }; template::value> struct __iterator_traits { }; template struct __iterator_traits<_Iterator, true> { 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 struct iterator_traits : public __iterator_traits<_Iterator> { }; # 172 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 3 template 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 struct iterator_traits { 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 inline typename iterator_traits<_Iter>::iterator_category __iterator_category(const _Iter&) { return typename iterator_traits<_Iter>::iterator_category(); } template struct _Iter_base { typedef _Iterator iterator_type; static iterator_type _S_base(_Iterator __it) { return __it; } }; template struct _Iter_base<_Iterator, true> { typedef typename _Iterator::iterator_type iterator_type; static iterator_type _S_base(_Iterator __it) { return __it.base(); } }; template using _RequireInputIter = typename enable_if::iterator_category, input_iterator_tag>::value>::type; } # 66 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h" 1 3 # 63 "/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h" 3 3 # 1 "/usr/include/c++/4.8/debug/debug.h" 1 3 namespace std { namespace __debug { } } namespace __gnu_debug { using namespace std::__debug; } # 81 "/usr/include/c++/4.8/debug/debug.h" 3 # 130 "/usr/include/c++/4.8/debug/debug.h" 3 # 66 "/usr/include/c++/4.8/bits/stl_iterator_base_funcs.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 inline typename iterator_traits<_RandomAccessIterator>::difference_type __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) { return __last - __first; } template inline typename iterator_traits<_InputIterator>::difference_type distance(_InputIterator __first, _InputIterator __last) { return std::__distance(__first, __last, std::__iterator_category(__first)); } template inline void __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) { ; while (__n--) ++__i; } template inline void __advance(_BidirectionalIterator& __i, _Distance __n, bidirectional_iterator_tag) { if (__n > 0) while (__n--) ++__i; else while (__n++) --__i; } template inline void __advance(_RandomAccessIterator& __i, _Distance __n, random_access_iterator_tag) { __i += __n; } template inline void advance(_InputIterator& __i, _Distance __n) { typename iterator_traits<_InputIterator>::difference_type __d = __n; std::__advance(__i, __d, std::__iterator_category(__i)); } template inline _ForwardIterator next(_ForwardIterator __x, typename iterator_traits<_ForwardIterator>::difference_type __n = 1) { std::advance(__x, __n); return __x; } template inline _BidirectionalIterator prev(_BidirectionalIterator __x, typename iterator_traits<_BidirectionalIterator>::difference_type __n = 1) { std::advance(__x, -__n); return __x; } } # 67 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_iterator.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class reverse_iterator : public iterator::iterator_category, typename iterator_traits<_Iterator>::value_type, typename iterator_traits<_Iterator>::difference_type, typename iterator_traits<_Iterator>::pointer, typename iterator_traits<_Iterator>::reference> { protected: _Iterator current; typedef iterator_traits<_Iterator> __traits_type; public: typedef _Iterator iterator_type; typedef typename __traits_type::difference_type difference_type; typedef typename __traits_type::pointer pointer; typedef typename __traits_type::reference reference; reverse_iterator() : current() { } explicit reverse_iterator(iterator_type __x) : current(__x) { } reverse_iterator(const reverse_iterator& __x) : current(__x.current) { } template reverse_iterator(const reverse_iterator<_Iter>& __x) : current(__x.base()) { } iterator_type base() const { return current; } 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); } }; template inline bool operator==(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __x.base() == __y.base(); } template inline bool operator<(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y.base() < __x.base(); } template inline bool operator!=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__x == __y); } template inline bool operator>(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y < __x; } template inline bool operator<=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__y < __x); } template inline bool operator>=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__x < __y); } template inline typename reverse_iterator<_Iterator>::difference_type operator-(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y.base() - __x.base(); } template inline reverse_iterator<_Iterator> operator+(typename reverse_iterator<_Iterator>::difference_type __n, const reverse_iterator<_Iterator>& __x) { return reverse_iterator<_Iterator>(__x.base() - __n); } template inline bool operator==(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return __x.base() == __y.base(); } template inline bool operator<(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return __y.base() < __x.base(); } template inline bool operator!=(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return !(__x == __y); } template inline bool operator>(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return __y < __x; } template inline bool operator<=(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return !(__y < __x); } template inline bool operator>=(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) { return !(__x < __y); } template inline auto operator-(const reverse_iterator<_IteratorL>& __x, const reverse_iterator<_IteratorR>& __y) -> decltype(__y.base() - __x.base()) { return __y.base() - __x.base(); } template class back_insert_iterator : public iterator { protected: _Container* container; public: typedef _Container container_type; explicit back_insert_iterator(_Container& __x) : container(&__x) { } # 435 "/usr/include/c++/4.8/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; } }; template inline back_insert_iterator<_Container> back_inserter(_Container& __x) { return back_insert_iterator<_Container>(__x); } template class front_insert_iterator : public iterator { protected: _Container* container; public: typedef _Container container_type; explicit front_insert_iterator(_Container& __x) : container(&__x) { } # 525 "/usr/include/c++/4.8/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; } }; template inline front_insert_iterator<_Container> front_inserter(_Container& __x) { return front_insert_iterator<_Container>(__x); } template class insert_iterator : public iterator { protected: _Container* container; typename _Container::iterator iter; public: typedef _Container container_type; insert_iterator(_Container& __x, typename _Container::iterator __i) : container(&__x), iter(__i) {} # 637 "/usr/include/c++/4.8/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; } }; template inline insert_iterator<_Container> inserter(_Container& __x, _Iterator __i) { return insert_iterator<_Container>(__x, typename _Container::iterator(__i)); } } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { using std::iterator_traits; using std::iterator; template class __normal_iterator { protected: _Iterator _M_current; typedef iterator_traits<_Iterator> __traits_type; public: typedef _Iterator iterator_type; typedef typename __traits_type::iterator_category iterator_category; typedef typename __traits_type::value_type value_type; typedef typename __traits_type::difference_type difference_type; typedef typename __traits_type::reference reference; typedef typename __traits_type::pointer pointer; constexpr __normal_iterator() : _M_current(_Iterator()) { } explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { } template __normal_iterator(const __normal_iterator<_Iter, typename __enable_if< (std::__are_same<_Iter, typename _Container::pointer>::__value), _Container>::__type>& __i) : _M_current(__i.base()) { } reference operator*() const { return *_M_current; } pointer operator->() const { return _M_current; } __normal_iterator& operator++() { ++_M_current; return *this; } __normal_iterator operator++(int) { return __normal_iterator(_M_current++); } __normal_iterator& operator--() { --_M_current; return *this; } __normal_iterator operator--(int) { return __normal_iterator(_M_current--); } reference operator[](const difference_type& __n) const { return _M_current[__n]; } __normal_iterator& operator+=(const difference_type& __n) { _M_current += __n; return *this; } __normal_iterator operator+(const difference_type& __n) const { return __normal_iterator(_M_current + __n); } __normal_iterator& operator-=(const difference_type& __n) { _M_current -= __n; return *this; } __normal_iterator operator-(const difference_type& __n) const { return __normal_iterator(_M_current - __n); } const _Iterator& base() const { return _M_current; } }; template inline bool operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() == __rhs.base(); } template inline bool operator==(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() == __rhs.base(); } template inline bool operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() != __rhs.base(); } template inline bool operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() != __rhs.base(); } template inline bool operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() < __rhs.base(); } template inline bool operator<(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() < __rhs.base(); } template inline bool operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() > __rhs.base(); } template inline bool operator>(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() > __rhs.base(); } template inline bool operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() <= __rhs.base(); } template inline bool operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() <= __rhs.base(); } template inline bool operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() >= __rhs.base(); } template inline bool operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() >= __rhs.base(); } template inline auto operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) -> decltype(__lhs.base() - __rhs.base()) { return __lhs.base() - __rhs.base(); } template inline typename __normal_iterator<_Iterator, _Container>::difference_type operator-(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() - __rhs.base(); } template inline __normal_iterator<_Iterator, _Container> operator+(typename __normal_iterator<_Iterator, _Container>::difference_type __n, const __normal_iterator<_Iterator, _Container>& __i) { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } } namespace std __attribute__ ((__visibility__ ("default"))) { template class move_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 _Iterator pointer; typedef value_type&& reference; move_iterator() : _M_current() { } explicit move_iterator(iterator_type __i) : _M_current(__i) { } template move_iterator(const move_iterator<_Iter>& __i) : _M_current(__i.base()) { } iterator_type base() const { return _M_current; } reference operator*() const { return std::move(*_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 inline bool operator==(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return __x.base() == __y.base(); } template inline bool operator==(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return __x.base() == __y.base(); } template inline bool operator!=(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return !(__x == __y); } template inline bool operator!=(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return !(__x == __y); } template inline bool operator<(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return __x.base() < __y.base(); } template inline bool operator<(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return __x.base() < __y.base(); } template inline bool operator<=(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return !(__y < __x); } template inline bool operator<=(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return !(__y < __x); } template inline bool operator>(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return __y < __x; } template inline bool operator>(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return __y < __x; } template inline bool operator>=(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) { return !(__x < __y); } template inline bool operator>=(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) { return !(__x < __y); } template inline auto operator-(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) -> decltype(__x.base() - __y.base()) { return __x.base() - __y.base(); } template inline auto operator-(const move_iterator<_Iterator>& __x, const move_iterator<_Iterator>& __y) -> decltype(__x.base() - __y.base()) { return __x.base() - __y.base(); } template inline move_iterator<_Iterator> operator+(typename move_iterator<_Iterator>::difference_type __n, const move_iterator<_Iterator>& __x) { return __x + __n; } template inline move_iterator<_Iterator> make_move_iterator(_Iterator __i) { return move_iterator<_Iterator>(__i); } template::value_type>::value, _Iterator, move_iterator<_Iterator>>::type> inline _ReturnType __make_move_if_noexcept_iterator(_Iterator __i) { return _ReturnType(__i); } } # 1147 "/usr/include/c++/4.8/bits/stl_iterator.h" 3 # 68 "/usr/include/c++/4.8/bits/stl_algobase.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { # 106 "/usr/include/c++/4.8/bits/stl_algobase.h" 3 template inline void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) { # 147 "/usr/include/c++/4.8/bits/stl_algobase.h" 3 swap(*__a, *__b); } template _ForwardIterator2 swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { ; for (; __first1 != __last1; ++__first1, ++__first2) std::iter_swap(__first1, __first2); return __first2; } template inline const _Tp& min(const _Tp& __a, const _Tp& __b) { if (__b < __a) return __b; return __a; } template inline const _Tp& max(const _Tp& __a, const _Tp& __b) { if (__a < __b) return __b; return __a; } template inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) { if (__comp(__b, __a)) return __b; return __a; } template inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) { if (__comp(__a, __b)) return __b; return __a; } template struct _Niter_base : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> { }; template inline typename _Niter_base<_Iterator>::iterator_type __niter_base(_Iterator __it) { return std::_Niter_base<_Iterator>::_S_base(__it); } template struct _Miter_base : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value> { }; template inline typename _Miter_base<_Iterator>::iterator_type __miter_base(_Iterator __it) { return std::_Miter_base<_Iterator>::_S_base(__it); } template struct __copy_move { template static _OI __copy_m(_II __first, _II __last, _OI __result) { for (; __first != __last; ++__result, ++__first) *__result = *__first; return __result; } }; template struct __copy_move { template 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 { template 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 { template 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 struct __copy_move<_IsMove, true, random_access_iterator_tag> { template static _Tp* __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) { const ptrdiff_t _Num = __last - __first; if (_Num) __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); return __result + _Num; } }; template 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 struct char_traits; template class istreambuf_iterator; template class ostreambuf_iterator; template typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(_CharT*, _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); template typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); template 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 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))); } template 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)); } template inline _OI move(_II __first, _II __last, _OI __result) { ; return std::__copy_move_a2(std::__miter_base(__first), std::__miter_base(__last), __result); } template struct __copy_move_backward { template static _BI2 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) { while (__first != __last) *--__result = *--__last; return __result; } }; template struct __copy_move_backward { template 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 { template 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 { template 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 struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> { template static _Tp* __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) { const ptrdiff_t _Num = __last - __first; if (_Num) __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); return __result - _Num; } }; template 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 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))); } template 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)); } template inline _BI2 move_backward(_BI1 __first, _BI1 __last, _BI2 __result) { ; return std::__copy_move_backward_a2(std::__miter_base(__first), std::__miter_base(__last), __result); } template inline typename __gnu_cxx::__enable_if::__value, void>::__type __fill_a(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { for (; __first != __last; ++__first) *__first = __value; } template 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 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; __builtin_memset(__first, static_cast(__tmp), __last - __first); } template inline void fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { ; std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), __value); } template inline typename __gnu_cxx::__enable_if::__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 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 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; } template inline _OI fill_n(_OI __first, _Size __n, const _Tp& __value) { return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); } template struct __equal { template static bool equal(_II1 __first1, _II1 __last1, _II2 __first2) { for (; __first1 != __last1; ++__first1, ++__first2) if (!(*__first1 == *__first2)) return false; return true; } }; template<> struct __equal { template static bool equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) { return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * (__last1 - __first1)); } }; template 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 struct __lc_rai { template static _II1 __newlast1(_II1, _II1 __last1, _II2, _II2) { return __last1; } template static bool __cnd2(_II __first, _II __last) { return __first != __last; } }; template<> struct __lc_rai { template 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 static bool __cnd2(_RAI, _RAI) { return true; } }; template struct __lexicographical_compare { template static bool __lc(_II1, _II1, _II2, _II2); }; template template bool __lexicographical_compare<_BoolType>:: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) { 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 (*__first1 < *__first2) return true; if (*__first2 < *__first1) return false; } return __first1 == __last1 && __first2 != __last2; } template<> struct __lexicographical_compare { template 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; const int __result = __builtin_memcmp(__first1, __first2, std::min(__len1, __len2)); return __result != 0 ? __result < 0 : __len1 < __len2; } }; template 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 _ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val) { 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 (*__middle < __val) { __first = __middle; ++__first; __len = __len - __half - 1; } else __len = __half; } return __first; } 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); } template 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)); } template 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; } template 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)); } template bool lexicographical_compare(_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 pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { ; while (__first1 != __last1 && *__first1 == *__first2) { ++__first1; ++__first2; } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } template pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __binary_pred) { ; while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2))) { ++__first1; ++__first2; } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } } # 62 "/usr/include/c++/4.8/algorithm" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_algo.h" 1 3 # 1 "/usr/include/c++/4.8/cstdlib" 1 3 # 40 "/usr/include/c++/4.8/cstdlib" 3 3 # 71 "/usr/include/c++/4.8/cstdlib" 3 # 1 "/usr/include/stdlib.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 33 "/usr/include/stdlib.h" 2 3 extern "C" { # 1 "/usr/include/bits/waitflags.h" 1 3 # 42 "/usr/include/stdlib.h" 2 3 # 1 "/usr/include/bits/waitstatus.h" 1 3 # 1 "/usr/include/endian.h" 1 3 # 1 "/usr/include/bits/endian.h" 1 3 # 37 "/usr/include/endian.h" 2 3 # 50 "/usr/include/endian.h" 3 # 1 "/usr/include/bits/byteswap.h" 1 3 # 1 "/usr/include/bits/types.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 28 "/usr/include/bits/types.h" 2 3 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; # 116 "/usr/include/bits/types.h" 3 # 1 "/usr/include/bits/typesizes.h" 1 3 # 37 "/usr/include/bits/typesizes.h" 3 # 74 "/usr/include/bits/typesizes.h" 3 # 122 "/usr/include/bits/types.h" 2 3 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 long 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 long 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 "/usr/include/bits/byteswap.h" 2 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 29 "/usr/include/bits/byteswap.h" 2 3 # 1 "/usr/include/bits/byteswap-16.h" 1 3 # 36 "/usr/include/bits/byteswap.h" 2 3 static __inline unsigned int __bswap_32 (unsigned int __bsx) { return __builtin_bswap32 (__bsx); } # 93 "/usr/include/bits/byteswap.h" 3 # 106 "/usr/include/bits/byteswap.h" 3 static __inline __uint64_t __bswap_64 (__uint64_t __bsx) { return __builtin_bswap64 (__bsx); } # 154 "/usr/include/bits/byteswap.h" 3 # 61 "/usr/include/endian.h" 2 3 # 95 "/usr/include/endian.h" 3 # 65 "/usr/include/bits/waitstatus.h" 2 3 union wait { int w_status; struct { unsigned int __w_termsig:7; unsigned int __w_coredump:1; unsigned int __w_retcode:8; unsigned int:16; # 83 "/usr/include/bits/waitstatus.h" 3 } __wait_terminated; struct { unsigned int __w_stopval:8; unsigned int __w_stopsig:8; unsigned int:16; # 96 "/usr/include/bits/waitstatus.h" 3 } __wait_stopped; }; # 43 "/usr/include/stdlib.h" 2 3 # 56 "/usr/include/stdlib.h" 3 # 74 "/usr/include/stdlib.h" 3 # 82 "/usr/include/stdlib.h" 3 # 94 "/usr/include/stdlib.h" 3 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; 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))); # 1 "/usr/include/xlocale.h" 1 3 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 "/usr/include/stdlib.h" 2 3 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))); # 299 "/usr/include/stdlib.h" 3 extern char *l64a (long int __n) throw () ; extern long int a64l (const char *__s) throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; # 1 "/usr/include/sys/types.h" 1 3 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; # 55 "/usr/include/sys/types.h" 3 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; # 93 "/usr/include/sys/types.h" 3 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; # 1 "/usr/include/time.h" 1 3 # 32 "/usr/include/time.h" 3 # 51 "/usr/include/time.h" 3 typedef __clock_t clock_t; typedef __time_t time_t; typedef __clockid_t clockid_t; typedef __timer_t timer_t; # 128 "/usr/include/time.h" 3 # 433 "/usr/include/time.h" 3 # 133 "/usr/include/sys/types.h" 2 3 typedef __useconds_t useconds_t; typedef __suseconds_t suseconds_t; # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 147 "/usr/include/sys/types.h" 2 3 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 185 "/usr/include/sys/types.h" 3 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__))); # 1 "/usr/include/sys/select.h" 1 3 # 1 "/usr/include/bits/select.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 23 "/usr/include/bits/select.h" 2 3 # 43 "/usr/include/bits/select.h" 3 # 57 "/usr/include/bits/select.h" 3 # 31 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/sigset.h" 1 3 typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; # 34 "/usr/include/sys/select.h" 2 3 typedef __sigset_t sigset_t; # 1 "/usr/include/time.h" 1 3 # 32 "/usr/include/time.h" 3 # 51 "/usr/include/time.h" 3 # 67 "/usr/include/time.h" 3 # 83 "/usr/include/time.h" 3 # 95 "/usr/include/time.h" 3 # 107 "/usr/include/time.h" 3 # 115 "/usr/include/time.h" 3 struct timespec { __time_t tv_sec; __syscall_slong_t tv_nsec; }; # 433 "/usr/include/time.h" 3 # 44 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/time.h" 1 3 struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; # 98 "/usr/include/bits/time.h" 3 # 46 "/usr/include/sys/select.h" 2 3 typedef long int __fd_mask; typedef struct { __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; extern "C" { extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); 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); } # 220 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/sysmacros.h" 1 3 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__)); # 58 "/usr/include/sys/sysmacros.h" 3 } # 223 "/usr/include/sys/types.h" 2 3 typedef __blksize_t blksize_t; typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; # 260 "/usr/include/sys/types.h" 3 typedef __blkcnt64_t blkcnt64_t; typedef __fsblkcnt64_t fsblkcnt64_t; typedef __fsfilcnt64_t fsfilcnt64_t; # 1 "/usr/include/bits/pthreadtypes.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 22 "/usr/include/bits/pthreadtypes.h" 2 3 # 56 "/usr/include/bits/pthreadtypes.h" 3 typedef unsigned long int pthread_t; union pthread_attr_t { char __size[56]; 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; # 86 "/usr/include/bits/pthreadtypes.h" 3 typedef union { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; __pthread_list_t __list; # 124 "/usr/include/bits/pthreadtypes.h" 3 } __data; char __size[40]; long int __align; } pthread_mutex_t; typedef union { char __size[4]; 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]; __extension__ long long int __align; } pthread_cond_t; typedef union { char __size[4]; 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; # 211 "/usr/include/bits/pthreadtypes.h" 3 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[4]; int __align; } pthread_barrierattr_t; # 271 "/usr/include/sys/types.h" 2 3 } # 315 "/usr/include/stdlib.h" 2 3 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 "/usr/include/alloca.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 25 "/usr/include/alloca.h" 2 3 extern "C" { extern void *alloca (size_t __size) throw (); } # 493 "/usr/include/stdlib.h" 2 3 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 (); extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; # 630 "/usr/include/stdlib.h" 3 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ; # 652 "/usr/include/stdlib.h" 3 extern int mkstemps64 (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ; extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; # 684 "/usr/include/stdlib.h" 3 extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; extern int mkostemps (char *__template, int __suffixlen, int __flags) __attribute__ ((__nonnull__ (1))) ; # 706 "/usr/include/stdlib.h" 3 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))) ; 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))) ; 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__)) ; 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))) ; 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 "/usr/include/bits/stdlib-float.h" 1 3 # 956 "/usr/include/stdlib.h" 2 3 # 964 "/usr/include/stdlib.h" 3 } # 73 "/usr/include/c++/4.8/cstdlib" 2 3 # 113 "/usr/include/c++/4.8/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 "/usr/include/c++/4.8/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; # 228 "/usr/include/c++/4.8/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 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 # 1 "/usr/include/c++/4.8/bits/algorithmfwd.h" 1 3 # 34 "/usr/include/c++/4.8/bits/algorithmfwd.h" 3 3 # 41 "/usr/include/c++/4.8/bits/algorithmfwd.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { template bool all_of(_IIter, _IIter, _Predicate); template bool any_of(_IIter, _IIter, _Predicate); template bool binary_search(_FIter, _FIter, const _Tp&); template bool binary_search(_FIter, _FIter, const _Tp&, _Compare); template _OIter copy(_IIter, _IIter, _OIter); template _BIter2 copy_backward(_BIter1, _BIter1, _BIter2); template _OIter copy_if(_IIter, _IIter, _OIter, _Predicate); template _OIter copy_n(_IIter, _Size, _OIter); template pair<_FIter, _FIter> equal_range(_FIter, _FIter, const _Tp&); template pair<_FIter, _FIter> equal_range(_FIter, _FIter, const _Tp&, _Compare); template void fill(_FIter, _FIter, const _Tp&); template _OIter fill_n(_OIter, _Size, const _Tp&); template _FIter1 find_end(_FIter1, _FIter1, _FIter2, _FIter2); template _FIter1 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); template _IIter find_if_not(_IIter, _IIter, _Predicate); template bool includes(_IIter1, _IIter1, _IIter2, _IIter2); template bool includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); template void inplace_merge(_BIter, _BIter, _BIter); template void inplace_merge(_BIter, _BIter, _BIter, _Compare); template bool is_heap(_RAIter, _RAIter); template bool is_heap(_RAIter, _RAIter, _Compare); template _RAIter is_heap_until(_RAIter, _RAIter); template _RAIter is_heap_until(_RAIter, _RAIter, _Compare); template bool is_partitioned(_IIter, _IIter, _Predicate); template bool is_permutation(_FIter1, _FIter1, _FIter2); template bool is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); template bool is_sorted(_FIter, _FIter); template bool is_sorted(_FIter, _FIter, _Compare); template _FIter is_sorted_until(_FIter, _FIter); template _FIter is_sorted_until(_FIter, _FIter, _Compare); template void iter_swap(_FIter1, _FIter2); template _FIter lower_bound(_FIter, _FIter, const _Tp&); template _FIter lower_bound(_FIter, _FIter, const _Tp&, _Compare); template void make_heap(_RAIter, _RAIter); template void make_heap(_RAIter, _RAIter, _Compare); template const _Tp& max(const _Tp&, const _Tp&); template const _Tp& max(const _Tp&, const _Tp&, _Compare); template const _Tp& min(const _Tp&, const _Tp&); template const _Tp& min(const _Tp&, const _Tp&, _Compare); template pair minmax(const _Tp&, const _Tp&); template pair minmax(const _Tp&, const _Tp&, _Compare); template pair<_FIter, _FIter> minmax_element(_FIter, _FIter); template pair<_FIter, _FIter> minmax_element(_FIter, _FIter, _Compare); template _Tp min(initializer_list<_Tp>); template _Tp min(initializer_list<_Tp>, _Compare); template _Tp max(initializer_list<_Tp>); template _Tp max(initializer_list<_Tp>, _Compare); template pair<_Tp, _Tp> minmax(initializer_list<_Tp>); template pair<_Tp, _Tp> minmax(initializer_list<_Tp>, _Compare); template bool next_permutation(_BIter, _BIter); template bool next_permutation(_BIter, _BIter, _Compare); template bool none_of(_IIter, _IIter, _Predicate); template _RAIter partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); template _RAIter partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); template pair<_OIter1, _OIter2> partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); template _FIter partition_point(_FIter, _FIter, _Predicate); template void pop_heap(_RAIter, _RAIter); template void pop_heap(_RAIter, _RAIter, _Compare); template bool prev_permutation(_BIter, _BIter); template bool prev_permutation(_BIter, _BIter, _Compare); template void push_heap(_RAIter, _RAIter); template void push_heap(_RAIter, _RAIter, _Compare); template _FIter remove(_FIter, _FIter, const _Tp&); template _FIter remove_if(_FIter, _FIter, _Predicate); template _OIter remove_copy(_IIter, _IIter, _OIter, const _Tp&); template _OIter remove_copy_if(_IIter, _IIter, _OIter, _Predicate); template _OIter replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); template _OIter replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); template void reverse(_BIter, _BIter); template _OIter reverse_copy(_BIter, _BIter, _OIter); template void rotate(_FIter, _FIter, _FIter); template _OIter rotate_copy(_FIter, _FIter, _FIter, _OIter); template void shuffle(_RAIter, _RAIter, _UGenerator&&); template void sort_heap(_RAIter, _RAIter); template void sort_heap(_RAIter, _RAIter, _Compare); template _BIter stable_partition(_BIter, _BIter, _Predicate); template void swap(_Tp&, _Tp&) noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) ; template void swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) noexcept(noexcept(swap(*__a, *__b))) ; template _FIter2 swap_ranges(_FIter1, _FIter1, _FIter2); template _FIter unique(_FIter, _FIter); template _FIter unique(_FIter, _FIter, _BinaryPredicate); template _FIter upper_bound(_FIter, _FIter, const _Tp&); template _FIter upper_bound(_FIter, _FIter, const _Tp&, _Compare); template _FIter adjacent_find(_FIter, _FIter); template _FIter adjacent_find(_FIter, _FIter, _BinaryPredicate); template typename iterator_traits<_IIter>::difference_type count(_IIter, _IIter, const _Tp&); template typename iterator_traits<_IIter>::difference_type count_if(_IIter, _IIter, _Predicate); template bool equal(_IIter1, _IIter1, _IIter2); template bool equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); template _IIter find(_IIter, _IIter, const _Tp&); template _FIter1 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); template _FIter1 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); template _IIter find_if(_IIter, _IIter, _Predicate); template _Funct for_each(_IIter, _IIter, _Funct); template void generate(_FIter, _FIter, _Generator); template _OIter generate_n(_OIter, _Size, _Generator); template bool lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); template bool lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); template _FIter max_element(_FIter, _FIter); template _FIter max_element(_FIter, _FIter, _Compare); template _OIter merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template _OIter merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template _FIter min_element(_FIter, _FIter); template _FIter min_element(_FIter, _FIter, _Compare); template pair<_IIter1, _IIter2> mismatch(_IIter1, _IIter1, _IIter2); template pair<_IIter1, _IIter2> mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); template void nth_element(_RAIter, _RAIter, _RAIter); template void nth_element(_RAIter, _RAIter, _RAIter, _Compare); template void partial_sort(_RAIter, _RAIter, _RAIter); template void partial_sort(_RAIter, _RAIter, _RAIter, _Compare); template _BIter partition(_BIter, _BIter, _Predicate); template void random_shuffle(_RAIter, _RAIter); template void random_shuffle(_RAIter, _RAIter, _Generator&&); template void replace(_FIter, _FIter, const _Tp&, const _Tp&); template void replace_if(_FIter, _FIter, _Predicate, const _Tp&); template _FIter1 search(_FIter1, _FIter1, _FIter2, _FIter2); template _FIter1 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); template _FIter search_n(_FIter, _FIter, _Size, const _Tp&); template _FIter search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); template _OIter set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template _OIter set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template _OIter set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template _OIter set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template _OIter set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template _OIter set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template _OIter set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template _OIter set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template void sort(_RAIter, _RAIter); template void sort(_RAIter, _RAIter, _Compare); template void stable_sort(_RAIter, _RAIter); template void stable_sort(_RAIter, _RAIter, _Compare); template _OIter transform(_IIter, _IIter, _OIter, _UnaryOperation); template _OIter transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); template _OIter unique_copy(_IIter, _IIter, _OIter); template _OIter unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); } # 61 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_heap.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template _Distance __is_heap_until(_RandomAccessIterator __first, _Distance __n) { _Distance __parent = 0; for (_Distance __child = 1; __child < __n; ++__child) { if (__first[__parent] < __first[__child]) return __child; if ((__child & 1) == 0) ++__parent; } return __n; } template _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 inline bool __is_heap(_RandomAccessIterator __first, _Distance __n) { return std::__is_heap_until(__first, __n) == __n; } template inline bool __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) { return std::__is_heap_until(__first, __n, __comp) == __n; } template inline bool __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { return std::__is_heap(__first, std::distance(__first, __last)); } template inline bool __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { return std::__is_heap(__first, __comp, std::distance(__first, __last)); } template void __push_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __topIndex, _Tp __value) { _Distance __parent = (__holeIndex - 1) / 2; while (__holeIndex > __topIndex && *(__first + __parent) < __value) { *(__first + __holeIndex) = std::move(*(__first + __parent)); __holeIndex = __parent; __parent = (__holeIndex - 1) / 2; } *(__first + __holeIndex) = std::move(__value); } template 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)); } template 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); } template 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), __comp); } template void __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __len, _Tp __value) { const _Distance __topIndex = __holeIndex; _Distance __secondChild = __holeIndex; while (__secondChild < (__len - 1) / 2) { __secondChild = 2 * (__secondChild + 1); if (*(__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)); } template inline void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _RandomAccessIterator __result) { 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)); } template 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); } } template 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), __comp); } template 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); } template inline void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { ; ; ; if (__last - __first > 1) { --__last; std::__pop_heap(__first, __last, __last, __comp); } } template void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { 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)); if (__parent == 0) return; __parent--; } } template 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--; } } template void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { ; ; while (__last - __first > 1) { --__last; std::__pop_heap(__first, __last, __last); } } template void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { ; ; while (__last - __first > 1) { --__last; std::__pop_heap(__first, __last, __last, __comp); } } template inline _RandomAccessIterator is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) { ; return __first + std::__is_heap_until(__first, std::distance(__first, __last)); } template inline _RandomAccessIterator is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { ; return __first + std::__is_heap_until(__first, std::distance(__first, __last), __comp); } template inline bool is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { return std::is_heap_until(__first, __last) == __last; } template inline bool is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { return std::is_heap_until(__first, __last, __comp) == __last; } } # 62 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_tempbuf.h" 1 3 # 1 "/usr/include/c++/4.8/bits/stl_construct.h" 1 3 # 1 "/usr/include/c++/4.8/new" 1 3 # 38 "/usr/include/c++/4.8/new" 3 3 # 1 "/usr/include/c++/4.8/exception" 1 3 # 34 "/usr/include/c++/4.8/exception" 3 3 #pragma GCC visibility push(default) # 1 "/usr/include/c++/4.8/bits/atomic_lockfree_defines.h" 1 3 # 34 "/usr/include/c++/4.8/bits/atomic_lockfree_defines.h" 3 3 # 60 "/usr/include/c++/4.8/bits/atomic_lockfree_defines.h" 3 # 39 "/usr/include/c++/4.8/exception" 2 3 extern "C++" { namespace std { 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; void terminate() noexcept __attribute__ ((__noreturn__)); unexpected_handler set_unexpected(unexpected_handler) noexcept; void unexpected() __attribute__ ((__noreturn__)); bool uncaught_exception() noexcept __attribute__ ((__pure__)); } namespace __gnu_cxx { void __verbose_terminate_handler(); } } #pragma GCC visibility pop # 1 "/usr/include/c++/4.8/bits/exception_ptr.h" 1 3 #pragma GCC visibility push(default) 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; } # 110 "/usr/include/c++/4.8/bits/exception_ptr.h" 3 exception_ptr& operator=(const exception_ptr&) noexcept; exception_ptr& operator=(exception_ptr&& __o) noexcept { exception_ptr(static_cast(__o)).swap(*this); return *this; } ~exception_ptr() noexcept; void swap(exception_ptr&) noexcept; # 136 "/usr/include/c++/4.8/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 exception_ptr copy_exception(_Ex __ex) noexcept { if (true) { } if (false) { return current_exception(); } } template exception_ptr make_exception_ptr(_Ex __ex) noexcept { return std::copy_exception<_Ex>(__ex); } } } #pragma GCC visibility pop # 153 "/usr/include/c++/4.8/exception" 2 3 # 1 "/usr/include/c++/4.8/bits/nested_exception.h" 1 3 #pragma GCC visibility push(default) extern "C++" { namespace std { class nested_exception { exception_ptr _M_ptr; public: nested_exception() noexcept : _M_ptr(current_exception()) { } nested_exception(const nested_exception&) = default; nested_exception& operator=(const nested_exception&) = default; virtual ~nested_exception() noexcept; void rethrow_nested() const __attribute__ ((__noreturn__)) { rethrow_exception(_M_ptr); } exception_ptr nested_ptr() const { return _M_ptr; } }; template struct _Nested_exception : public _Except, public nested_exception { explicit _Nested_exception(_Except&& __ex) : _Except(static_cast<_Except&&>(__ex)) { } }; template struct __get_nested_helper { static const nested_exception* _S_get(const _Ex& __ex) { return dynamic_cast(&__ex); } }; template struct __get_nested_helper<_Ex*> { static const nested_exception* _S_get(const _Ex* __ex) { return dynamic_cast(__ex); } }; template inline const nested_exception* __get_nested_exception(const _Ex& __ex) { return __get_nested_helper<_Ex>::_S_get(__ex); } template void __throw_with_nested(_Ex&&, const nested_exception* = 0) __attribute__ ((__noreturn__)); template void __throw_with_nested(_Ex&&, ...) __attribute__ ((__noreturn__)); template inline void __throw_with_nested(_Ex&& __ex, const nested_exception*) { throw __ex; } template inline void __throw_with_nested(_Ex&& __ex, ...) { throw _Nested_exception<_Ex>(static_cast<_Ex&&>(__ex)); } template void throw_with_nested(_Ex __ex) __attribute__ ((__noreturn__)); template inline void throw_with_nested(_Ex __ex) { if (__get_nested_exception(__ex)) throw __ex; __throw_with_nested(static_cast<_Ex&&>(__ex), &__ex); } template inline void rethrow_if_nested(const _Ex& __ex) { if (const nested_exception* __nested = __get_nested_exception(__ex)) __nested->rethrow_nested(); } inline void rethrow_if_nested(const nested_exception& __ex) { __ex.rethrow_nested(); } } } #pragma GCC visibility pop # 154 "/usr/include/c++/4.8/exception" 2 3 # 41 "/usr/include/c++/4.8/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(); }; struct nothrow_t { }; extern const nothrow_t nothrow; typedef void (*new_handler)(); new_handler set_new_handler(new_handler) throw(); } 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 "/usr/include/c++/4.8/bits/stl_construct.h" 2 3 # 1 "/usr/include/c++/4.8/ext/alloc_traits.h" 1 3 # 33 "/usr/include/c++/4.8/ext/alloc_traits.h" 3 3 # 1 "/usr/include/c++/4.8/bits/alloc_traits.h" 1 3 # 1 "/usr/include/c++/4.8/bits/memoryfwd.h" 1 3 # 47 "/usr/include/c++/4.8/bits/memoryfwd.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class allocator; template<> class allocator; template struct uses_allocator; } # 36 "/usr/include/c++/4.8/bits/alloc_traits.h" 2 3 # 1 "/usr/include/c++/4.8/bits/ptr_traits.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class __has_element_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_element_type : integral_constant ::type> ::value> { }; template class __has_difference_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_difference_type : integral_constant ::type> ::value> { }; template::value> struct __ptrtr_elt_type; template struct __ptrtr_elt_type<_Tp, true> { typedef typename _Tp::element_type __type; }; template class _SomePtr, typename _Tp, typename... _Args> struct __ptrtr_elt_type<_SomePtr<_Tp, _Args...>, false> { typedef _Tp __type; }; template::value> struct __ptrtr_diff_type { typedef typename _Tp::difference_type __type; }; template struct __ptrtr_diff_type<_Tp, false> { typedef ptrdiff_t __type; }; template class __ptrtr_rebind_helper { template static constexpr bool _S_chk(typename _Ptr2::template rebind<_Up2>*) { return true; } template static constexpr bool _S_chk(...) { return false; } public: static const bool __value = _S_chk<_Ptr, _Up>(nullptr); }; template const bool __ptrtr_rebind_helper<_Ptr, _Up>::__value; template::__value> struct __ptrtr_rebind; template struct __ptrtr_rebind<_Tp, _Up, true> { typedef typename _Tp::template rebind<_Up> __type; }; template class _SomePtr, typename _Up, typename _Tp, typename... _Args> struct __ptrtr_rebind<_SomePtr<_Tp, _Args...>, _Up, false> { typedef _SomePtr<_Up, _Args...> __type; }; template::type> struct __ptrtr_not_void { typedef _Tp __type; }; template struct __ptrtr_not_void<_Tp, void> { struct __type { }; }; template 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 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 using rebind = typename __ptrtr_rebind<_Ptr, _Up>::__type; }; template struct pointer_traits<_Tp*> { typedef _Tp* pointer; typedef _Tp element_type; typedef ptrdiff_t difference_type; template using rebind = _Up*; static pointer pointer_to(typename __ptrtr_not_void::__type& __r) noexcept { return std::addressof(__r); } }; } # 37 "/usr/include/c++/4.8/bits/alloc_traits.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class __alloctr_rebind_helper { template static constexpr bool _S_chk(typename _Alloc2::template rebind<_Tp2>::other*) { return true; } template static constexpr bool _S_chk(...) { return false; } public: static const bool __value = _S_chk<_Alloc, _Tp>(nullptr); }; template const bool __alloctr_rebind_helper<_Alloc, _Tp>::__value; template::__value> struct __alloctr_rebind; template struct __alloctr_rebind<_Alloc, _Tp, true> { typedef typename _Alloc::template rebind<_Tp>::other __type; }; template class _Alloc, typename _Tp, typename _Up, typename... _Args> struct __alloctr_rebind<_Alloc<_Up, _Args...>, _Tp, false> { typedef _Alloc<_Tp, _Args...> __type; }; template struct allocator_traits { typedef _Alloc allocator_type; typedef typename _Alloc::value_type value_type; # 99 "/usr/include/c++/4.8/bits/alloc_traits.h" 3 private: template 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 static typename _Tp::const_pointer _S_const_pointer_helper(_Tp*); static typename pointer_traits ::template rebind _S_const_pointer_helper(...); typedef decltype(_S_const_pointer_helper((_Alloc*)0)) __const_pointer; public: typedef __const_pointer const_pointer; private: template static typename _Tp::void_pointer _S_void_pointer_helper(_Tp*); static typename pointer_traits ::template rebind _S_void_pointer_helper(...); typedef decltype(_S_void_pointer_helper((_Alloc*)0)) __void_pointer; public: typedef __void_pointer void_pointer; private: template static typename _Tp::const_void_pointer _S_const_void_pointer_helper(_Tp*); static typename pointer_traits ::template rebind _S_const_void_pointer_helper(...); typedef decltype(_S_const_void_pointer_helper((_Alloc*)0)) __const_void_pointer; public: typedef __const_void_pointer const_void_pointer; private: template static typename _Tp::difference_type _S_difference_type_helper(_Tp*); static typename pointer_traits ::difference_type _S_difference_type_helper(...); typedef decltype(_S_difference_type_helper((_Alloc*)0)) __difference_type; public: typedef __difference_type difference_type; private: template static typename _Tp::size_type _S_size_type_helper(_Tp*); static typename make_unsigned ::type _S_size_type_helper(...); typedef decltype(_S_size_type_helper((_Alloc*)0)) __size_type; public: typedef __size_type size_type; private: template 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: typedef __propagate_on_container_copy_assignment propagate_on_container_copy_assignment; private: template 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: typedef __propagate_on_container_move_assignment propagate_on_container_move_assignment; private: template 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: typedef __propagate_on_container_swap propagate_on_container_swap; template using rebind_alloc = typename __alloctr_rebind<_Alloc, _Tp>::__type; template using rebind_traits = allocator_traits>; private: template struct __allocate_helper { template()->allocate( std::declval(), std::declval()))> static true_type __test(int); template static false_type __test(...); typedef decltype(__test<_Alloc>(0)) type; static const bool value = type::value; }; template static typename enable_if<__allocate_helper<_Alloc2>::value, pointer>::type _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint) { return __a.allocate(__n, __hint); } template static typename enable_if::value, pointer>::type _S_allocate(_Alloc2& __a, size_type __n, ...) { return __a.allocate(__n); } template struct __construct_helper { template()->construct( std::declval<_Tp*>(), std::declval<_Args>()...))> static true_type __test(int); template static false_type __test(...); typedef decltype(__test<_Alloc>(0)) type; static const bool value = type::value; }; template static typename enable_if<__construct_helper<_Tp, _Args...>::value, void>::type _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) { __a.construct(__p, std::forward<_Args>(__args)...); } template static typename enable_if<__and_<__not_<__construct_helper<_Tp, _Args...>>, is_constructible<_Tp, _Args...>>::value, void>::type _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } template struct __destroy_helper { template()->destroy( std::declval<_Tp*>()))> static true_type __test(int); template static false_type __test(...); typedef decltype(__test<_Alloc>(0)) type; static const bool value = type::value; }; template static typename enable_if<__destroy_helper<_Tp>::value, void>::type _S_destroy(_Alloc& __a, _Tp* __p) { __a.destroy(__p); } template static typename enable_if::value, void>::type _S_destroy(_Alloc&, _Tp* __p) { __p->~_Tp(); } template struct __maxsize_helper { template()->max_size())> static true_type __test(int); template static false_type __test(...); typedef decltype(__test<_Alloc2>(0)) type; static const bool value = type::value; }; template static typename enable_if<__maxsize_helper<_Alloc2>::value, size_type>::type _S_max_size(_Alloc2& __a) { return __a.max_size(); } template static typename enable_if::value, size_type>::type _S_max_size(_Alloc2&) { return __gnu_cxx::__numeric_traits::__max; } template struct __select_helper { template() ->select_on_container_copy_construction())> static true_type __test(int); template static false_type __test(...); typedef decltype(__test<_Alloc2>(0)) type; static const bool value = type::value; }; template static typename enable_if<__select_helper<_Alloc2>::value, _Alloc2>::type _S_select(_Alloc2& __a) { return __a.select_on_container_copy_construction(); } template static typename enable_if::value, _Alloc2>::type _S_select(_Alloc2& __a) { return __a; } public: static pointer allocate(_Alloc& __a, size_type __n) { return __a.allocate(__n); } static pointer allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) { return _S_allocate(__a, __n, __hint); } static void deallocate(_Alloc& __a, pointer __p, size_type __n) { __a.deallocate(__p, __n); } template static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) { _S_construct(__a, __p, std::forward<_Args>(__args)...); } template static void destroy(_Alloc& __a, _Tp* __p) { _S_destroy(__a, __p); } static size_type max_size(const _Alloc& __a) { return _S_max_size(__a); } static _Alloc select_on_container_copy_construction(const _Alloc& __rhs) { return _S_select(__rhs); } }; template template const bool allocator_traits<_Alloc>::__allocate_helper<_Alloc2>::value; template template const bool allocator_traits<_Alloc>::__construct_helper<_Tp, _Args...>::value; template template const bool allocator_traits<_Alloc>::__destroy_helper<_Tp>::value; template template const bool allocator_traits<_Alloc>::__maxsize_helper<_Alloc2>::value; template template const bool allocator_traits<_Alloc>::__select_helper<_Alloc2>::value; template inline void __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) { __one = __two; } template inline void __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) { } template inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) { typedef allocator_traits<_Alloc> __traits; typedef typename __traits::propagate_on_container_copy_assignment __pocca; __do_alloc_on_copy(__one, __two, __pocca()); } template inline _Alloc __alloc_on_copy(const _Alloc& __a) { typedef allocator_traits<_Alloc> __traits; return __traits::select_on_container_copy_construction(__a); } template inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) { __one = std::move(__two); } template inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) { } template inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) { typedef allocator_traits<_Alloc> __traits; typedef typename __traits::propagate_on_container_move_assignment __pocma; __do_alloc_on_move(__one, __two, __pocma()); } template inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) { using std::swap; swap(__one, __two); } template inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) { } template inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) { typedef allocator_traits<_Alloc> __traits; typedef typename __traits::propagate_on_container_swap __pocs; __do_alloc_on_swap(__one, __two, __pocs()); } template class __is_copy_insertable_impl { typedef allocator_traits<_Alloc> _Traits; template(), std::declval<_Up*>(), std::declval()))> static true_type _M_select(int); template static false_type _M_select(...); public: typedef decltype(_M_select(0)) type; }; template struct __is_copy_insertable : __is_copy_insertable_impl<_Alloc>::type { }; template struct __is_copy_insertable> : is_copy_constructible<_Tp> { }; template struct __allow_copy_cons { }; template<> struct __allow_copy_cons { __allow_copy_cons() = default; __allow_copy_cons(const __allow_copy_cons&) = delete; __allow_copy_cons(__allow_copy_cons&&) = default; __allow_copy_cons& operator=(const __allow_copy_cons&) = default; __allow_copy_cons& operator=(__allow_copy_cons&&) = default; }; template using __check_copy_constructible = __allow_copy_cons<__is_copy_insertable<_Alloc>::value>; } # 37 "/usr/include/c++/4.8/ext/alloc_traits.h" 2 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct __allocator_always_compares_equal { static const bool value = false; }; template const bool __allocator_always_compares_equal<_Alloc>::value; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct array_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct bitmap_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct malloc_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct mt_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct new_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template struct pool_allocator; template struct __allocator_always_compares_equal> { static const bool value = true; }; template const bool __allocator_always_compares_equal>::value; template 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 struct __is_custom_pointer : std::integral_constant::value && !std::is_pointer<_Ptr>::value> { }; public: template static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type construct(_Alloc& __a, _Ptr __p, _Args&&... __args) { _Base_type::construct(__a, std::addressof(*__p), std::forward<_Args>(__args)...); } template static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type destroy(_Alloc& __a, _Ptr __p) { _Base_type::destroy(__a, std::addressof(*__p)); } static _Alloc _S_select_on_copy(const _Alloc& __a) { return _Base_type::select_on_container_copy_construction(__a); } static void _S_on_swap(_Alloc& __a, _Alloc& __b) { std::__alloc_on_swap(__a, __b); } static constexpr bool _S_propagate_on_copy_assign() { return _Base_type::propagate_on_container_copy_assignment::value; } static constexpr bool _S_propagate_on_move_assign() { return _Base_type::propagate_on_container_move_assignment::value; } static constexpr bool _S_propagate_on_swap() { return _Base_type::propagate_on_container_swap::value; } static constexpr bool _S_always_equal() { return __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 struct rebind { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; # 237 "/usr/include/c++/4.8/ext/alloc_traits.h" 3 }; } # 62 "/usr/include/c++/4.8/bits/stl_construct.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template inline void _Construct(_T1* __p, _Args&&... __args) { ::new(static_cast(__p)) _T1(std::forward<_Args>(__args)...); } # 86 "/usr/include/c++/4.8/bits/stl_construct.h" 3 template inline void _Destroy(_Tp* __pointer) { __pointer->~_Tp(); } template struct _Destroy_aux { template static void __destroy(_ForwardIterator __first, _ForwardIterator __last) { for (; __first != __last; ++__first) std::_Destroy(std::__addressof(*__first)); } }; template<> struct _Destroy_aux { template static void __destroy(_ForwardIterator, _ForwardIterator) { } }; template 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 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 inline void _Destroy(_ForwardIterator __first, _ForwardIterator __last, allocator<_Tp>&) { _Destroy(__first, __last); } } # 61 "/usr/include/c++/4.8/bits/stl_tempbuf.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len) noexcept { const ptrdiff_t __max = __gnu_cxx::__numeric_traits::__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); } template inline void return_temporary_buffer(_Tp* __p) { ::operator delete(__p, std::nothrow); } template 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 struct __uninitialized_construct_buf_dispatch { template static void __ucr(_Pointer __first, _Pointer __last, _ForwardIterator __seed) { if(__first == __last) return; _Pointer __cur = __first; if (true) { 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); } if (false) { std::_Destroy(__first, __cur); ; } } }; template<> struct __uninitialized_construct_buf_dispatch { template static void __ucr(_Pointer, _Pointer, _ForwardIterator) { } }; template 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 _Temporary_buffer<_ForwardIterator, _Tp>:: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) : _M_original_len(std::distance(__first, __last)), _M_len(0), _M_buffer(0) { if (true) { std::pair __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); } if (false) { std::return_temporary_buffer(_M_buffer); _M_buffer = 0; _M_len = 0; ; } } } # 63 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 # 1 "/usr/include/c++/4.8/random" 1 3 # 33 "/usr/include/c++/4.8/random" 3 3 # 1 "/usr/include/c++/4.8/cmath" 1 3 # 40 "/usr/include/c++/4.8/cmath" 3 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 1 3 # 1 "/usr/include/math.h" 1 3 extern "C" { # 1 "/usr/include/bits/huge_val.h" 1 3 # 33 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/huge_valf.h" 1 3 # 35 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/huge_vall.h" 1 3 # 36 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/inf.h" 1 3 # 39 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/nan.h" 1 3 # 42 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/mathdef.h" 1 3 typedef float float_t; typedef double double_t; # 40 "/usr/include/bits/mathdef.h" 3 # 46 "/usr/include/math.h" 2 3 # 64 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 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__)); extern int isinf (double __value) throw () __attribute__ ((__const__)); 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__)); extern int isnan (double __value) throw () __attribute__ ((__const__)); 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 (); # 70 "/usr/include/math.h" 2 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 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 (); # 89 "/usr/include/math.h" 2 3 # 120 "/usr/include/math.h" 3 # 1 "/usr/include/bits/mathcalls.h" 1 3 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 (); # 133 "/usr/include/math.h" 2 3 extern int signgam; enum { FP_NAN = 0, FP_INFINITE = 1, FP_ZERO = 2, FP_SUBNORMAL = 3, FP_NORMAL = 4 }; # 219 "/usr/include/math.h" 3 # 231 "/usr/include/math.h" 3 # 243 "/usr/include/math.h" 3 # 259 "/usr/include/math.h" 3 # 271 "/usr/include/math.h" 3 # 298 "/usr/include/math.h" 3 typedef enum { _IEEE_ = -1, _SVID_, _XOPEN_, _POSIX_, _ISOC_ } _LIB_VERSION_TYPE; extern _LIB_VERSION_TYPE _LIB_VERSION; struct __exception { int type; char *name; double arg1; double arg2; double retval; }; extern int matherr (struct __exception *__exc) throw (); # 351 "/usr/include/math.h" 3 # 363 "/usr/include/math.h" 3 # 381 "/usr/include/math.h" 3 # 400 "/usr/include/math.h" 3 # 423 "/usr/include/math.h" 3 # 445 "/usr/include/math.h" 3 # 453 "/usr/include/math.h" 3 # 461 "/usr/include/math.h" 3 # 469 "/usr/include/math.h" 3 # 477 "/usr/include/math.h" 3 # 485 "/usr/include/math.h" 3 } # 20 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 2 3 # 36 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 60 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 81 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 99 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 108 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 119 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 131 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern "C" { # 160 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 174 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 199 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 215 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern int fpclassifyf ( float __x ) throw(); extern int fpclassify ( double __x ) throw(); extern int fpclassifyd ( double __x ) throw(); extern int fpclassifyl ( long double __x ) throw(); extern int __fpclassifyf ( float __x ) throw(); extern int __fpclassify ( double __x ) throw(); extern int __fpclassifyd ( double __x ) throw(); extern int __fpclassifyl ( long double __x ) throw(); extern int isinff ( float __x ) throw(); extern int isinf ( double __x ) throw(); extern int isinfd ( double __x ) throw(); extern int isinfl ( long double __x ) throw(); extern int __isinff ( float __x ) throw(); extern int __isinf ( double __x ) throw(); extern int __isinfd ( double __x ) throw(); extern int __isinfl ( long double __x ) throw(); extern int isnanf ( float __x ) throw(); extern int isnan ( double __x ) throw(); extern int isnand ( double __x ) throw(); extern int isnanl ( long double __x ) throw(); extern int __isnanf ( float __x ) throw(); extern int __isnan ( double __x ) throw(); extern int __isnand ( double __x ) throw(); extern int __isnanl ( long double __x ) throw(); extern int isnormalf ( float __x ) throw(); extern int isnormal ( double __x ) throw(); extern int isnormald ( double __x ) throw(); extern int isnormall ( long double __x ) throw(); extern int __isnormalf ( float __x ) throw(); extern int __isnormal ( double __x ) throw(); extern int __isnormald ( double __x ) throw(); extern int __isnormall ( long double __x ) throw(); extern int isfinitef ( float __x ) throw(); extern int isfinite ( double __x ) throw(); extern int isfinited ( double __x ) throw(); extern int isfinitel ( long double __x ) throw(); extern int __isfinitef ( float __x ) throw(); extern int __isfinite ( double __x ) throw(); extern int __isfinited ( double __x ) throw(); extern int __isfinitel ( long double __x ) throw(); extern int finitef ( float __x ) throw(); extern int finite ( double __x ) throw(); extern int finited ( double __x ) throw(); extern int finitel ( long double __x ) throw(); extern int __finitef ( float __x ) throw(); extern int __finite ( double __x ) throw(); extern int __finited ( double __x ) throw(); extern int __finitel ( long double __x ) throw(); extern int signbitf ( float __x ) throw(); extern int signbit ( double __x ) throw(); extern int signbitd ( double __x ) throw(); extern int signbitl ( long double __x ) throw(); extern int __signbitf ( float __x ) throw(); extern int __signbit ( double __x ) throw(); extern int __signbitd ( double __x ) throw(); extern int __signbitl ( long double __x ) throw(); # 324 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 345 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 352 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern int isgreaterf( float __xf, float __yf ); extern int isgreater( double __xd, double __yd ); extern int isgreaterl( long double __xl, long double __yl ); extern int __isgreaterf( float __xf, float __yf ); extern int __isgreater( double __xd, double __yd ); extern int __isgreaterl( long double __xl, long double __yl ); extern int isgreaterequalf( float __xf, float __yf ); extern int isgreaterequal( double __xd, double __yd ); extern int isgreaterequall( long double __xl, long double __yl ); extern int __isgreaterequalf( float __xf, float __yf ); extern int __isgreaterequal( double __xd, double __yd ); extern int __isgreaterequall( long double __xl, long double __yl ); extern int islessf( float __xf, float __yf ); extern int isless( double __xd, double __yd ); extern int islessl( long double __xl, long double __yl ); extern int __islessf( float __xf, float __yf ); extern int __isless( double __xd, double __yd ); extern int __islessl( long double __xl, long double __yl ); extern int islessequalf( float __xf, float __yf ); extern int islessequal( double __xd, double __yd ); extern int islessequall( long double __xl, long double __yl ); extern int __islessequalf( float __xf, float __yf ); extern int __islessequal( double __xd, double __yd ); extern int __islessequall( long double __xl, long double __yl ); extern int islessgreaterf( float __xf, float __yf ); extern int islessgreater( double __xd, double __yd ); extern int islessgreaterl( long double __xl, long double __yl ); extern int __islessgreaterf( float __xf, float __yf ); extern int __islessgreater( double __xd, double __yd ); extern int __islessgreaterl( long double __xl, long double __yl ); extern int isunorderedf( float __xf, float __yf ); extern int isunordered( double __xd, double __yd ); extern int isunorderedl( long double __xl, long double __yl ); extern int __isunorderedf( float __xf, float __yf ); extern int __isunordered( double __xd, double __yd ); extern int __isunorderedl( long double __xl, long double __yl ); # 406 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 413 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 429 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 439 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern double cot( double __x ); extern float cotf( float __x ); extern long double cotl( long double __x ); extern double cosd( double __x ); extern float cosdf( float __x ); extern long double cosdl( long double __x ); extern double sind( double __x ); extern float sindf( float __x ); extern long double sindl( long double __x ); extern double tand( double __x ); extern float tandf( float __x ); extern long double tandl( long double __x ); extern double cotd( double __x ); extern float cotdf( float __x ); extern long double cotdl( long double __x ); extern double acosd( double __x ); extern float acosdf( float __x ); extern long double acosdl( long double __x ); extern double asind( double __x ); extern float asindf( float __x ); extern long double asindl( long double __x ); extern double atand( double __x ); extern float atandf( float __x ); extern long double atandl( long double __x ); extern double atand2( double __y, double __x ); extern float atand2f( float __y, float __x ); extern long double atand2l( long double __y, long double __x ); extern double atan2d( double __y, double __x ); extern float atan2df( float __y, float __x ); extern long double atan2dl( long double __y, long double __x ); extern void sincosd( double __x, double *__psin, double *__pcos ); extern void sincosdf( float __x, float *__psin, float *__pcos ); extern void sincosdl( long double __x, long double *__psin, long double *__pcos ); # 505 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern void sinhcosh( double __x, double *__psinh, double *__pcosh ); extern void sinhcoshf( float __x, float *__psinh, float *__pcosh ); extern void sinhcoshl( long double __x, long double *__psinh, long double *__pcosh ); # 519 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 546 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 560 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 601 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 624 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 643 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 654 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 663 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern double invsqrt( double __x ); extern float invsqrtf( float __x ); extern long double invsqrtl( long double __x ); # 682 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern double cdfnorm( double __x ); extern float cdfnormf( float __x ); extern double cdfnorminv( double __x ); extern float cdfnorminvf( float __x ); extern double erfinv( double __x ); extern float erfinvf( float __x ); extern long double erfinvl( long double __x ); extern double erfcinv( double __x ); extern float erfcinvf( float __x ); extern double gamma_r( double __x, int *__signgam ); extern float gammaf_r( float __x, int *__signgam ); extern long double gammal_r( long double __x, int *__signgam ); # 708 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 724 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 742 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 762 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 781 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 796 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 805 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 828 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern double annuity( double __x, double __y ); extern double compound( double __x, double __y ); extern float annuityf( float __x, float __y ); extern long double annuityl( long double __x, long double __y ); extern float compoundf( float __x, float __y ); extern long double compoundl( long double __x, long double __y ); # 848 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 866 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 877 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 918 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 939 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 1109 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 1123 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 typedef struct ____exception { int type; const char *name; double arg1; double arg2; double retval; } ___exception; # 1144 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 typedef struct ____exceptionf { int type; const char *name; float arg1; float arg2; float retval; } ___exceptionf; typedef struct ____exceptionl { int type; const char *name; long double arg1; long double arg2; long double retval; } ___exceptionl; extern int matherrf( struct ____exceptionf *__e ); extern int matherrl( struct ____exceptionl *__e ); # 1176 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 typedef int ( *___pmatherr )( struct ____exception *__e ); typedef int ( *___pmatherrf )( struct ____exceptionf *__e ); typedef int ( *___pmatherrl )( struct ____exceptionl *__e ); extern ___pmatherr __libm_setusermatherr( ___pmatherr __user_matherr ); extern ___pmatherrf __libm_setusermatherrf( ___pmatherrf __user_matherrf ); extern ___pmatherrl __libm_setusermatherrl( ___pmatherrl __user_matherrl ); # 1214 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 extern _LIB_VERSION_TYPE _LIB_VERSIONIMF; # 1228 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 # 1441 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 3 } # 45 "/usr/include/c++/4.8/cmath" 2 3 # 74 "/usr/include/c++/4.8/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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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); } # 430 "/usr/include/c++/4.8/cmath" 3 template 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 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 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 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 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 inline constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, double>::__type tanh(_Tp __x) { return __builtin_tanh(__x); } } # 554 "/usr/include/c++/4.8/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 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 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 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 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 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_signbit(__x); } constexpr bool signbit(double __x) { return __builtin_signbit(__x); } constexpr bool signbit(long double __x) { return __builtin_signbit(__x); } template 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 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 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 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 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 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 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)); } # 915 "/usr/include/c++/4.8/cmath" 3 } # 1031 "/usr/include/c++/4.8/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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, double>::__type trunc(_Tp __x) { return __builtin_trunc(__x); } } # 39 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/cstdio" 1 3 # 40 "/usr/include/c++/4.8/cstdio" 3 3 # 1 "/usr/include/stdio.h" 1 3 extern "C" { # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 34 "/usr/include/stdio.h" 2 3 struct _IO_FILE; typedef struct _IO_FILE FILE; typedef struct _IO_FILE __FILE; # 1 "/usr/include/libio.h" 1 3 # 1 "/usr/include/_G_config.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 16 "/usr/include/_G_config.h" 2 3 # 1 "/usr/include/wchar.h" 1 3 # 78 "/usr/include/wchar.h" 3 typedef struct { int __count; union { unsigned int __wch; char __wchb[4]; } __value; } __mbstate_t; # 894 "/usr/include/wchar.h" 3 # 21 "/usr/include/_G_config.h" 2 3 typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; # 43 "/usr/include/_G_config.h" 3 # 32 "/usr/include/libio.h" 2 3 # 46 "/usr/include/libio.h" 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 1 3 # 35 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 typedef __builtin_va_list __gnuc_va_list; # 124 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 50 "/usr/include/libio.h" 2 3 # 76 "/usr/include/libio.h" 3 # 85 "/usr/include/libio.h" 3 # 111 "/usr/include/libio.h" 3 # 123 "/usr/include/libio.h" 3 # 142 "/usr/include/libio.h" 3 struct _IO_jump_t; struct _IO_FILE; # 154 "/usr/include/libio.h" 3 typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; # 177 "/usr/include/libio.h" 3 }; enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; # 244 "/usr/include/libio.h" 3 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; # 293 "/usr/include/libio.h" 3 __off64_t _offset; # 302 "/usr/include/libio.h" 3 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_; # 332 "/usr/include/libio.h" 3 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); # 416 "/usr/include/libio.h" 3 # 430 "/usr/include/libio.h" 3 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 (); # 463 "/usr/include/libio.h" 3 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 (); # 520 "/usr/include/libio.h" 3 } # 75 "/usr/include/stdio.h" 2 3 typedef __gnuc_va_list va_list; # 86 "/usr/include/stdio.h" 3 # 100 "/usr/include/stdio.h" 3 typedef _G_fpos_t fpos_t; typedef _G_fpos64_t fpos64_t; # 147 "/usr/include/stdio.h" 3 # 1 "/usr/include/bits/stdio_lim.h" 1 3 # 34 "/usr/include/bits/stdio_lim.h" 3 # 165 "/usr/include/stdio.h" 2 3 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) ; # 203 "/usr/include/stdio.h" 3 extern FILE *tmpfile64 (void) ; extern char *tmpnam (char *__s) throw () ; extern char *tmpnam_r (char *__s) throw () ; extern char *tempnam (const char *__dir, const char *__pfx) throw () __attribute__ ((__malloc__)) ; extern int fclose (FILE *__stream); extern int fflush (FILE *__stream); extern int fflush_unlocked (FILE *__stream); 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 "/usr/include/stdio.h" 3 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 (); # 462 "/usr/include/stdio.h" 3 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))); # 521 "/usr/include/stdio.h" 3 extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); extern int getchar (void); extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); 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); 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) ; extern char *gets (char *__s) __attribute__ ((__deprecated__)); extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) ; 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); extern int fputs_unlocked (const char *__restrict __s, FILE *__restrict __stream); 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); extern int fseeko (FILE *__stream, __off_t __off, int __whence); extern __off_t ftello (FILE *__stream) ; # 791 "/usr/include/stdio.h" 3 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); extern int fsetpos (FILE *__stream, const fpos_t *__pos); # 815 "/usr/include/stdio.h" 3 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 "/usr/include/bits/sys_errlist.h" 1 3 extern int sys_nerr; extern const char *const sys_errlist[]; extern int _sys_nerr; extern const char *const _sys_errlist[]; # 854 "/usr/include/stdio.h" 2 3 extern int fileno (FILE *__stream) throw () ; extern int fileno_unlocked (FILE *__stream) throw () ; 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 (); # 930 "/usr/include/stdio.h" 3 # 942 "/usr/include/stdio.h" 3 } # 43 "/usr/include/c++/4.8/cstdio" 2 3 # 92 "/usr/include/c++/4.8/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 ::gets; 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; } namespace __gnu_cxx { # 165 "/usr/include/c++/4.8/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; } # 40 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/cstdlib" 1 3 # 40 "/usr/include/c++/4.8/cstdlib" 3 3 # 41 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/string" 1 3 # 37 "/usr/include/c++/4.8/string" 3 3 # 1 "/usr/include/c++/4.8/bits/stringfwd.h" 1 3 # 38 "/usr/include/c++/4.8/bits/stringfwd.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct char_traits; template, typename _Alloc = allocator<_CharT> > class basic_string; template<> struct char_traits; typedef basic_string string; template<> struct char_traits; typedef basic_string wstring; template<> struct char_traits; template<> struct char_traits; typedef basic_string u16string; typedef basic_string u32string; } # 40 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/char_traits.h" 1 3 # 38 "/usr/include/c++/4.8/bits/char_traits.h" 3 3 # 1 "/usr/include/c++/4.8/bits/postypes.h" 1 3 # 39 "/usr/include/c++/4.8/bits/postypes.h" 3 3 # 1 "/usr/include/c++/4.8/cwchar" 1 3 # 40 "/usr/include/c++/4.8/cwchar" 3 3 # 1 "/usr/include/wchar.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 1 3 # 35 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 124 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 40 "/usr/include/wchar.h" 2 3 # 1 "/usr/include/bits/wchar.h" 1 3 # 40 "/usr/include/bits/wchar.h" 3 # 48 "/usr/include/bits/wchar.h" 3 # 42 "/usr/include/wchar.h" 2 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 typedef unsigned int wint_t; # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 52 "/usr/include/wchar.h" 2 3 # 63 "/usr/include/wchar.h" 3 # 72 "/usr/include/wchar.h" 3 # 97 "/usr/include/wchar.h" 3 typedef __mbstate_t mbstate_t; extern "C" { struct tm; extern wchar_t *wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw (); extern wchar_t *wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw (); extern wchar_t *wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw (); extern wchar_t *wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw (); extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) throw () __attribute__ ((__pure__)); extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __attribute__ ((__pure__)); 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__)); 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 (); # 404 "/usr/include/wchar.h" 3 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 (); 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 () ; # 679 "/usr/include/wchar.h" 3 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 () ; # 735 "/usr/include/wchar.h" 3 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); 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); extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); extern wint_t putwchar_unlocked (wchar_t __wc); 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 (); } # 45 "/usr/include/c++/4.8/cwchar" 2 3 # 61 "/usr/include/c++/4.8/cwchar" 3 namespace std { using ::mbstate_t; } # 132 "/usr/include/c++/4.8/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; # 231 "/usr/include/c++/4.8/cwchar" 3 } namespace __gnu_cxx { using ::wcstold; # 257 "/usr/include/c++/4.8/cwchar" 3 using ::wcstoll; using ::wcstoull; } namespace std { using ::__gnu_cxx::wcstold; using ::__gnu_cxx::wcstoll; using ::__gnu_cxx::wcstoull; } namespace std { using std::wcstof; using std::vfwscanf; using std::vswscanf; using std::vwscanf; using std::wcstold; using std::wcstoll; using std::wcstoull; } # 41 "/usr/include/c++/4.8/bits/postypes.h" 2 3 # 67 "/usr/include/c++/4.8/bits/postypes.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { typedef long streamoff; # 96 "/usr/include/c++/4.8/bits/postypes.h" 3 typedef ptrdiff_t streamsize; template class fpos { private: streamoff _M_off; _StateT _M_state; public: fpos() : _M_off(0), _M_state() { } 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 inline bool operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) { return streamoff(__lhs) == streamoff(__rhs); } template inline bool operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) { return streamoff(__lhs) != streamoff(__rhs); } typedef fpos streampos; typedef fpos wstreampos; typedef fpos u16streampos; typedef fpos u32streampos; } # 41 "/usr/include/c++/4.8/bits/char_traits.h" 2 3 # 1 "/usr/include/c++/4.8/cwchar" 1 3 # 40 "/usr/include/c++/4.8/cwchar" 3 3 # 1 "/usr/include/wchar.h" 1 3 # 896 "/usr/include/wchar.h" 3 # 45 "/usr/include/c++/4.8/cwchar" 2 3 # 42 "/usr/include/c++/4.8/bits/char_traits.h" 2 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct _Char_types { typedef unsigned long int_type; typedef std::streampos pos_type; typedef std::streamoff off_type; typedef std::mbstate_t state_type; }; template 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(__c); } static constexpr int_type to_int_type(const char_type& __c) { return static_cast(__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(-1); } static constexpr int_type not_eof(const int_type& __c) { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } }; template 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 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 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 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 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 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"))) { template struct char_traits : public __gnu_cxx::char_traits<_CharT> { }; template<> struct char_traits { 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 __c1 < __c2; } static int compare(const char_type* __s1, const char_type* __s2, size_t __n) { 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) { return static_cast(__builtin_memchr(__s, __a, __n)); } static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) { return static_cast(__builtin_memmove(__s1, __s2, __n)); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return static_cast(__builtin_memcpy(__s1, __s2, __n)); } static char_type* assign(char_type* __s, size_t __n, char_type __a) { return static_cast(__builtin_memset(__s, __a, __n)); } static constexpr char_type to_char_type(const int_type& __c) noexcept { return static_cast(__c); } static constexpr int_type to_int_type(const char_type& __c) noexcept { return static_cast(static_cast(__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(-1); } static constexpr int_type not_eof(const int_type& __c) noexcept { return (__c == eof()) ? 0 : __c; } }; template<> struct char_traits { 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) { 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) { return wmemchr(__s, __a, __n); } static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) { return wmemmove(__s1, __s2, __n); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return wmemcpy(__s1, __s2, __n); } static char_type* assign(char_type* __s, size_t __n, char_type __a) { 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((0xffffffffu)); } static constexpr int_type not_eof(const int_type& __c) noexcept { return eq_int_type(__c, eof()) ? 0 : __c; } }; } # 1 "/usr/include/c++/4.8/cstdint" 1 3 # 33 "/usr/include/c++/4.8/cstdint" 3 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h" 1 3 # 1 "/usr/include/stdint.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 28 "/usr/include/stdint.h" 2 3 # 46 "/usr/include/stdint.h" 3 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long int uint64_t; 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; typedef signed char int_fast8_t; typedef long int int_fast16_t; typedef long int int_fast32_t; typedef long int int_fast64_t; # 101 "/usr/include/stdint.h" 3 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; # 114 "/usr/include/stdint.h" 3 typedef long int intptr_t; typedef unsigned long int uintptr_t; # 130 "/usr/include/stdint.h" 3 typedef long int intmax_t; typedef unsigned long int uintmax_t; # 142 "/usr/include/stdint.h" 3 # 151 "/usr/include/stdint.h" 3 # 200 "/usr/include/stdint.h" 3 # 210 "/usr/include/stdint.h" 3 # 221 "/usr/include/stdint.h" 3 # 233 "/usr/include/stdint.h" 3 # 254 "/usr/include/stdint.h" 3 # 286 "/usr/include/stdint.h" 3 # 296 "/usr/include/stdint.h" 3 # 305 "/usr/include/stdint.h" 3 # 10 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h" 2 3 # 42 "/usr/include/c++/4.8/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; } # 377 "/usr/include/c++/4.8/bits/char_traits.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template<> struct char_traits { 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) { return (static_cast (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return (static_cast (__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(-1); } static constexpr int_type not_eof(const int_type& __c) noexcept { return eq_int_type(__c, eof()) ? 0 : __c; } }; template<> struct char_traits { 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) { return (static_cast (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return (static_cast (__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(-1); } static constexpr int_type not_eof(const int_type& __c) noexcept { return eq_int_type(__c, eof()) ? 0 : __c; } }; } # 41 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/allocator.h" 1 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++allocator.h" 1 3 # 1 "/usr/include/c++/4.8/ext/new_allocator.h" 1 3 # 39 "/usr/include/c++/4.8/ext/new_allocator.h" 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { using std::size_t; using std::ptrdiff_t; template 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 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 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 void construct(_Up* __p, _Args&&... __args) { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } template void destroy(_Up* __p) { __p->~_Up(); } # 135 "/usr/include/c++/4.8/ext/new_allocator.h" 3 }; template inline bool operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) { return true; } template inline bool operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) { return false; } } # 34 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++allocator.h" 2 3 namespace std { template using __allocator_base = __gnu_cxx::new_allocator<_Tp>; } # 47 "/usr/include/c++/4.8/bits/allocator.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template<> class allocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef void* pointer; typedef const void* const_pointer; typedef void value_type; template struct rebind { typedef allocator<_Tp1> other; }; typedef true_type propagate_on_container_move_assignment; }; template 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 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 allocator(const allocator<_Tp1>&) throw() { } ~allocator() throw() { } }; template inline bool operator==(const allocator<_T1>&, const allocator<_T2>&) { return true; } template inline bool operator==(const allocator<_Tp>&, const allocator<_Tp>&) { return true; } template inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&) { return false; } template inline bool operator!=(const allocator<_Tp>&, const allocator<_Tp>&) { return false; } extern template class allocator; extern template class allocator; template struct __alloc_swap { static void _S_do_it(_Alloc&, _Alloc&) { } }; template struct __alloc_swap<_Alloc, false> { static void _S_do_it(_Alloc& __one, _Alloc& __two) { if (__one != __two) swap(__one, __two); } }; template struct __alloc_neq { static bool _S_do_it(const _Alloc&, const _Alloc&) { return false; } }; template struct __alloc_neq<_Alloc, false> { static bool _S_do_it(const _Alloc& __one, const _Alloc& __two) { return __one != __two; } }; template, is_nothrow_move_constructible>::value> struct __shrink_to_fit_aux { static bool _S_do_it(_Tp&) { return false; } }; template struct __shrink_to_fit_aux<_Tp, true> { static bool _S_do_it(_Tp& __c) { if (true) { _Tp(__make_move_if_noexcept_iterator(__c.begin()), __make_move_if_noexcept_iterator(__c.end()), __c.get_allocator()).swap(__c); return true; } if (false) { return false; } } }; } # 42 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/localefwd.h" 1 3 # 38 "/usr/include/c++/4.8/bits/localefwd.h" 3 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++locale.h" 1 3 # 40 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++locale.h" 3 3 # 1 "/usr/include/c++/4.8/clocale" 1 3 # 40 "/usr/include/c++/4.8/clocale" 3 3 # 1 "/usr/include/locale.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 29 "/usr/include/locale.h" 2 3 # 1 "/usr/include/bits/locale.h" 1 3 # 39 "/usr/include/bits/locale.h" 3 # 30 "/usr/include/locale.h" 2 3 extern "C" { # 48 "/usr/include/locale.h" 3 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 "/usr/include/locale.h" 3 }; extern char *setlocale (int __category, const char *__locale) throw (); extern struct lconv *localeconv (void) throw (); extern __locale_t newlocale (int __category_mask, const char *__locale, __locale_t __base) throw (); # 183 "/usr/include/locale.h" 3 extern __locale_t duplocale (__locale_t __dataset) throw (); extern void freelocale (__locale_t __dataset) throw (); extern __locale_t uselocale (__locale_t __dataset) throw (); } # 43 "/usr/include/c++/4.8/clocale" 2 3 namespace std { using ::lconv; using ::setlocale; using ::localeconv; } # 42 "/usr/include/c++/4.8/x86_64-suse-linux/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); # 87 "/usr/include/c++/4.8/x86_64-suse-linux/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); # 108 "/usr/include/c++/4.8/x86_64-suse-linux/bits/c++locale.h" 3 return __ret; } } # 41 "/usr/include/c++/4.8/bits/localefwd.h" 2 3 # 1 "/usr/include/c++/4.8/iosfwd" 1 3 # 37 "/usr/include/c++/4.8/iosfwd" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { class ios_base; template > class basic_ios; template > class basic_streambuf; template > class basic_istream; template > class basic_ostream; template > class basic_iostream; template, typename _Alloc = allocator<_CharT> > class basic_stringbuf; template, typename _Alloc = allocator<_CharT> > class basic_istringstream; template, typename _Alloc = allocator<_CharT> > class basic_ostringstream; template, typename _Alloc = allocator<_CharT> > class basic_stringstream; template > class basic_filebuf; template > class basic_ifstream; template > class basic_ofstream; template > class basic_fstream; template > class istreambuf_iterator; template > class ostreambuf_iterator; typedef basic_ios ios; typedef basic_streambuf streambuf; typedef basic_istream istream; typedef basic_ostream ostream; typedef basic_iostream iostream; typedef basic_stringbuf stringbuf; typedef basic_istringstream istringstream; typedef basic_ostringstream ostringstream; typedef basic_stringstream stringstream; typedef basic_filebuf filebuf; typedef basic_ifstream ifstream; typedef basic_ofstream ofstream; typedef basic_fstream fstream; typedef basic_ios wios; typedef basic_streambuf wstreambuf; typedef basic_istream wistream; typedef basic_ostream wostream; typedef basic_iostream wiostream; typedef basic_stringbuf wstringbuf; typedef basic_istringstream wistringstream; typedef basic_ostringstream wostringstream; typedef basic_stringstream wstringstream; typedef basic_filebuf wfilebuf; typedef basic_ifstream wifstream; typedef basic_ofstream wofstream; typedef basic_fstream wfstream; } # 42 "/usr/include/c++/4.8/bits/localefwd.h" 2 3 # 1 "/usr/include/c++/4.8/cctype" 1 3 # 40 "/usr/include/c++/4.8/cctype" 3 3 # 1 "/usr/include/ctype.h" 1 3 extern "C" { # 45 "/usr/include/ctype.h" 3 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)) }; 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__)); # 98 "/usr/include/ctype.h" 3 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 (); # 179 "/usr/include/ctype.h" 3 # 241 "/usr/include/ctype.h" 3 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 (); # 302 "/usr/include/ctype.h" 3 # 344 "/usr/include/ctype.h" 3 } # 43 "/usr/include/c++/4.8/cctype" 2 3 # 61 "/usr/include/c++/4.8/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 "/usr/include/c++/4.8/bits/localefwd.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { class locale; template bool has_facet(const locale&) throw(); template const _Facet& use_facet(const locale&); template bool isspace(_CharT, const locale&); template bool isprint(_CharT, const locale&); template bool iscntrl(_CharT, const locale&); template bool isupper(_CharT, const locale&); template bool islower(_CharT, const locale&); template bool isalpha(_CharT, const locale&); template bool isdigit(_CharT, const locale&); template bool ispunct(_CharT, const locale&); template bool isxdigit(_CharT, const locale&); template bool isalnum(_CharT, const locale&); template bool isgraph(_CharT, const locale&); template _CharT toupper(_CharT, const locale&); template _CharT tolower(_CharT, const locale&); class ctype_base; template class ctype; template<> class ctype; template<> class ctype; template class ctype_byname; class codecvt_base; template class codecvt; template<> class codecvt; template<> class codecvt; template class codecvt_byname; template > class num_get; template > class num_put; template class numpunct; template class numpunct_byname; template class collate; template class collate_byname; class time_base; template > class time_get; template > class time_get_byname; template > class time_put; template > class time_put_byname; class money_base; template > class money_get; template > class money_put; template class moneypunct; template class moneypunct_byname; class messages_base; template class messages; template class messages_byname; } # 44 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/ostream_insert.h" 1 3 # 34 "/usr/include/c++/4.8/bits/ostream_insert.h" 3 3 # 1 "/usr/include/c++/4.8/bits/cxxabi_forced.h" 1 3 # 35 "/usr/include/c++/4.8/bits/cxxabi_forced.h" 3 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 "/usr/include/c++/4.8/bits/ostream_insert.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 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 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) { if (true) { 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); } if (false) { __out._M_setstate(__ios_base::badbit); ; } if (false) { __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 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_function.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct unary_function { typedef _Arg argument_type; typedef _Result result_type; }; template struct binary_function { typedef _Arg1 first_argument_type; typedef _Arg2 second_argument_type; typedef _Result result_type; }; template struct plus : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; } }; template struct minus : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; } }; template struct multiplies : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; } }; template struct divides : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; } }; template struct modulus : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; } }; template struct negate : public unary_function<_Tp, _Tp> { _Tp operator()(const _Tp& __x) const { return -__x; } }; template struct equal_to : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; } }; template struct not_equal_to : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; } }; template struct greater : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } }; template struct less : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; } }; template struct greater_equal : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; } }; template struct less_equal : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; } }; template struct logical_and : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; } }; template struct logical_or : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; } }; template struct logical_not : public unary_function<_Tp, bool> { bool operator()(const _Tp& __x) const { return !__x; } }; template struct bit_and : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x & __y; } }; template struct bit_or : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x | __y; } }; template struct bit_xor : public binary_function<_Tp, _Tp, _Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x ^ __y; } }; template class unary_negate : public unary_function { protected: _Predicate _M_pred; public: explicit unary_negate(const _Predicate& __x) : _M_pred(__x) { } bool operator()(const typename _Predicate::argument_type& __x) const { return !_M_pred(__x); } }; template inline unary_negate<_Predicate> not1(const _Predicate& __pred) { return unary_negate<_Predicate>(__pred); } template class binary_negate : public binary_function { protected: _Predicate _M_pred; public: explicit binary_negate(const _Predicate& __x) : _M_pred(__x) { } bool operator()(const typename _Predicate::first_argument_type& __x, const typename _Predicate::second_argument_type& __y) const { return !_M_pred(__x, __y); } }; template inline binary_negate<_Predicate> not2(const _Predicate& __pred) { return binary_negate<_Predicate>(__pred); } template 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 inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg)) { return pointer_to_unary_function<_Arg, _Result>(__x); } template 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 inline pointer_to_binary_function<_Arg1, _Arg2, _Result> ptr_fun(_Result (*__x)(_Arg1, _Arg2)) { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } template struct _Identity : public unary_function<_Tp,_Tp> { _Tp& operator()(_Tp& __x) const { return __x; } const _Tp& operator()(const _Tp& __x) const { return __x; } }; template 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::first_type& operator()(_Pair2& __x) const { return __x.first; } template const typename _Pair2::first_type& operator()(const _Pair2& __x) const { return __x.first; } }; template 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; } }; template 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 class const_mem_fun_t : public unary_function { 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 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 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 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 class const_mem_fun1_t : public binary_function { 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 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 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 inline mem_fun_t<_Ret, _Tp> mem_fun(_Ret (_Tp::*__f)()) { return mem_fun_t<_Ret, _Tp>(__f); } template inline const_mem_fun_t<_Ret, _Tp> mem_fun(_Ret (_Tp::*__f)() const) { return const_mem_fun_t<_Ret, _Tp>(__f); } template inline mem_fun_ref_t<_Ret, _Tp> mem_fun_ref(_Ret (_Tp::*__f)()) { return mem_fun_ref_t<_Ret, _Tp>(__f); } template 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 inline mem_fun1_t<_Ret, _Tp, _Arg> mem_fun(_Ret (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } template 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 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 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 "/usr/include/c++/4.8/backward/binders.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class binder1st : public unary_function { 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 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 class binder2nd : public unary_function { 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 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)); } } # 732 "/usr/include/c++/4.8/bits/stl_function.h" 2 3 # 49 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/range_access.h" 1 3 # 34 "/usr/include/c++/4.8/bits/range_access.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template inline auto begin(_Container& __cont) -> decltype(__cont.begin()) { return __cont.begin(); } template inline auto begin(const _Container& __cont) -> decltype(__cont.begin()) { return __cont.begin(); } template inline auto end(_Container& __cont) -> decltype(__cont.end()) { return __cont.end(); } template inline auto end(const _Container& __cont) -> decltype(__cont.end()) { return __cont.end(); } template inline _Tp* begin(_Tp (&__arr)[_Nm]) { return __arr; } template inline _Tp* end(_Tp (&__arr)[_Nm]) { return __arr + _Nm; } } # 52 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/basic_string.h" 1 3 # 38 "/usr/include/c++/4.8/bits/basic_string.h" 3 3 # 1 "/usr/include/c++/4.8/ext/atomicity.h" 1 3 # 33 "/usr/include/c++/4.8/ext/atomicity.h" 3 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr.h" 1 3 #pragma GCC visibility push(default) # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 1 3 # 1 "/usr/include/pthread.h" 1 3 # 1 "/usr/include/sched.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 29 "/usr/include/sched.h" 2 3 # 1 "/usr/include/time.h" 1 3 # 32 "/usr/include/time.h" 3 # 51 "/usr/include/time.h" 3 # 67 "/usr/include/time.h" 3 # 83 "/usr/include/time.h" 3 # 95 "/usr/include/time.h" 3 # 107 "/usr/include/time.h" 3 # 128 "/usr/include/time.h" 3 # 433 "/usr/include/time.h" 3 # 33 "/usr/include/sched.h" 2 3 # 1 "/usr/include/bits/sched.h" 1 3 # 34 "/usr/include/bits/sched.h" 3 # 70 "/usr/include/bits/sched.h" 3 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; }; typedef unsigned long int __cpu_mask; typedef struct { __cpu_mask __bits[4096 / (8 * sizeof (__cpu_mask))]; } cpu_set_t; # 165 "/usr/include/bits/sched.h" 3 # 184 "/usr/include/bits/sched.h" 3 # 195 "/usr/include/bits/sched.h" 3 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 (); } # 42 "/usr/include/sched.h" 2 3 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 (); # 84 "/usr/include/sched.h" 3 # 91 "/usr/include/sched.h" 3 # 109 "/usr/include/sched.h" 3 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 "/usr/include/pthread.h" 2 3 # 1 "/usr/include/time.h" 1 3 extern "C" { # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 38 "/usr/include/time.h" 2 3 # 1 "/usr/include/bits/time.h" 1 3 # 37 "/usr/include/bits/time.h" 3 # 58 "/usr/include/bits/time.h" 3 # 1 "/usr/include/bits/timex.h" 1 3 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; }; # 68 "/usr/include/bits/timex.h" 3 # 81 "/usr/include/bits/timex.h" 3 # 87 "/usr/include/bits/time.h" 2 3 extern "C" { extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); } # 42 "/usr/include/time.h" 2 3 # 67 "/usr/include/time.h" 3 # 83 "/usr/include/time.h" 3 # 95 "/usr/include/time.h" 3 # 107 "/usr/include/time.h" 3 # 128 "/usr/include/time.h" 3 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; # 178 "/usr/include/time.h" 3 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 (); extern time_t timegm (struct tm *__tp) throw (); extern time_t timelocal (struct tm *__tp) throw (); extern int dysize (int __year) throw () __attribute__ ((__const__)); 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))); extern int getdate_err; extern struct tm *getdate (const char *__string); extern int getdate_r (const char *__restrict __string, struct tm *__restrict __resbufp); } # 25 "/usr/include/pthread.h" 2 3 # 1 "/usr/include/bits/setjmp.h" 1 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 27 "/usr/include/bits/setjmp.h" 2 3 typedef long int __jmp_buf[8]; # 28 "/usr/include/pthread.h" 2 3 # 1 "/usr/include/bits/wordsize.h" 1 3 # 29 "/usr/include/pthread.h" 2 3 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 }; # 93 "/usr/include/pthread.h" 3 # 106 "/usr/include/pthread.h" 3 # 121 "/usr/include/pthread.h" 3 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 }; # 163 "/usr/include/pthread.h" 3 enum { PTHREAD_INHERIT_SCHED, PTHREAD_EXPLICIT_SCHED }; enum { PTHREAD_SCOPE_SYSTEM, PTHREAD_SCOPE_PROCESS }; enum { PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED }; 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 }; 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))); extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 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__)); struct __pthread_cleanup_frame { void (*__cancel_routine) (void *); void *__cancel_arg; int __do_it; int __cancel_type; }; # 668 "/usr/include/pthread.h" 3 # 691 "/usr/include/pthread.h" 3 extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) ; # 703 "/usr/include/pthread.h" 3 extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) ; # 726 "/usr/include/pthread.h" 3 extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) ; # 739 "/usr/include/pthread.h" 3 extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) ; extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) __attribute__ ((__noreturn__)) __attribute__ ((__weak__)) ; 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))); 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))); 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))); 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))); 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))); 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))); extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) throw (); # 1169 "/usr/include/pthread.h" 3 } # 36 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 2 3 # 46 "/usr/include/c++/4.8/x86_64-suse-linux/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; # 71 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 3 # 84 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 3 # 97 "/usr/include/c++/4.8/x86_64-suse-linux/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"))); # 155 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 3 # 213 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 3 static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); # 245 "/usr/include/c++/4.8/x86_64-suse-linux/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; } # 307 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr-default.h" 3 # 657 "/usr/include/c++/4.8/x86_64-suse-linux/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; } # 806 "/usr/include/c++/4.8/x86_64-suse-linux/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); } # 848 "/usr/include/c++/4.8/x86_64-suse-linux/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 "/usr/include/c++/4.8/x86_64-suse-linux/bits/gthr.h" 2 3 #pragma GCC visibility pop # 36 "/usr/include/c++/4.8/ext/atomicity.h" 2 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/atomic_word.h" 1 3 typedef int _Atomic_word; # 37 "/usr/include/c++/4.8/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); } # 63 "/usr/include/c++/4.8/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); } } # 116 "/usr/include/c++/4.8/ext/atomicity.h" 3 # 40 "/usr/include/c++/4.8/bits/basic_string.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class basic_string { typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; public: typedef _Traits traits_type; typedef typename _Traits::char_type value_type; typedef _Alloc allocator_type; typedef typename _CharT_alloc_type::size_type size_type; typedef typename _CharT_alloc_type::difference_type difference_type; typedef typename _CharT_alloc_type::reference reference; typedef typename _CharT_alloc_type::const_reference const_reference; typedef typename _CharT_alloc_type::pointer pointer; typedef typename _CharT_alloc_type::const_pointer const_pointer; typedef __gnu_cxx::__normal_iterator iterator; typedef __gnu_cxx::__normal_iterator const_iterator; typedef std::reverse_iterator const_reverse_iterator; typedef std::reverse_iterator reverse_iterator; private: struct _Rep_base { size_type _M_length; size_type _M_capacity; _Atomic_word _M_refcount; }; struct _Rep : _Rep_base { typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; static const size_type _S_max_size; static const _CharT _S_terminal; static size_type _S_empty_rep_storage[]; static _Rep& _S_empty_rep() { void* __p = reinterpret_cast(&_S_empty_rep_storage); return *reinterpret_cast<_Rep*>(__p); } bool _M_is_leaked() const { return this->_M_refcount < 0; } bool _M_is_shared() const { return this->_M_refcount > 0; } void _M_set_leaked() { this->_M_refcount = -1; } void _M_set_sharable() { this->_M_refcount = 0; } void _M_set_length_and_sharable(size_type __n) { if (__builtin_expect(this != &_S_empty_rep(), false)) { this->_M_set_sharable(); this->_M_length = __n; traits_type::assign(this->_M_refdata()[__n], _S_terminal); } } _CharT* _M_refdata() throw() { return reinterpret_cast<_CharT*>(this + 1); } _CharT* _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) { return (!_M_is_leaked() && __alloc1 == __alloc2) ? _M_refcopy() : _M_clone(__alloc1); } static _Rep* _S_create(size_type, size_type, const _Alloc&); void _M_dispose(const _Alloc& __a) { if (__builtin_expect(this != &_S_empty_rep(), false)) { ; if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) { ; _M_destroy(__a); } } } void _M_destroy(const _Alloc&) throw(); _CharT* _M_refcopy() throw() { if (__builtin_expect(this != &_S_empty_rep(), false)) __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1); return _M_refdata(); } _CharT* _M_clone(const _Alloc&, size_type __res = 0); }; struct _Alloc_hider : _Alloc { _Alloc_hider(_CharT* __dat, const _Alloc& __a) : _Alloc(__a), _M_p(__dat) { } _CharT* _M_p; }; public: static const size_type npos = static_cast(-1); private: mutable _Alloc_hider _M_dataplus; _CharT* _M_data() const { return _M_dataplus._M_p; } _CharT* _M_data(_CharT* __p) { return (_M_dataplus._M_p = __p); } _Rep* _M_rep() const { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } iterator _M_ibegin() const { return iterator(_M_data()); } iterator _M_iend() const { return iterator(_M_data() + this->size()); } void _M_leak() { if (!_M_rep()->_M_is_leaked()) _M_leak_hard(); } size_type _M_check(size_type __pos, const char* __s) const { if (__pos > this->size()) __throw_out_of_range((__s)); 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 { const bool __testoff = __off < this->size() - __pos; return __testoff ? __off : this->size() - __pos; } bool _M_disjunct(const _CharT* __s) const { return (less()(__s, _M_data()) || less()(_M_data() + this->size(), __s)); } static void _M_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 _M_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 _M_assign(_CharT* __d, size_type __n, _CharT __c) { if (__n == 1) traits_type::assign(*__d, __c); else traits_type::assign(__d, __n, __c); } template 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) { _S_copy_chars(__p, __k1.base(), __k2.base()); } static void _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) { _S_copy_chars(__p, __k1.base(), __k2.base()); } static void _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) { _M_copy(__p, __k1, __k2 - __k1); } static void _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) { _M_copy(__p, __k1, __k2 - __k1); } static int _S_compare(size_type __n1, size_type __n2) { const difference_type __d = difference_type(__n1 - __n2); if (__d > __gnu_cxx::__numeric_traits::__max) return __gnu_cxx::__numeric_traits::__max; else if (__d < __gnu_cxx::__numeric_traits::__min) return __gnu_cxx::__numeric_traits::__min; else return int(__d); } void _M_mutate(size_type __pos, size_type __len1, size_type __len2); void _M_leak_hard(); static _Rep& _S_empty_rep() { return _Rep::_S_empty_rep(); } public: basic_string() : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } explicit basic_string(const _Alloc& __a); basic_string(const basic_string& __str); basic_string(const basic_string& __str, size_type __pos, size_type __n = npos); basic_string(const basic_string& __str, size_type __pos, size_type __n, const _Alloc& __a); basic_string(const _CharT* __s, size_type __n, const _Alloc& __a = _Alloc()); basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); basic_string(basic_string&& __str) noexcept : _M_dataplus(__str._M_dataplus) { __str._M_data(_S_empty_rep()._M_refdata()); } basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()); template basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a = _Alloc()); ~basic_string() noexcept { _M_rep()->_M_dispose(this->get_allocator()); } basic_string& operator=(const basic_string& __str) { return this->assign(__str); } basic_string& operator=(const _CharT* __s) { return this->assign(__s); } basic_string& operator=(_CharT __c) { this->assign(1, __c); return *this; } 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 { _M_leak(); return iterator(_M_data()); } const_iterator begin() const noexcept { return const_iterator(_M_data()); } iterator end() noexcept { _M_leak(); 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_rep()->_M_length; } size_type length() const noexcept { return _M_rep()->_M_length; } size_type max_size() const noexcept { return _Rep::_S_max_size; } void resize(size_type __n, _CharT __c); void resize(size_type __n) { this->resize(__n, _CharT()); } void shrink_to_fit() { if (capacity() > size()) { if (true) { reserve(0); } if (false) { } } } size_type capacity() const noexcept { return _M_rep()->_M_capacity; } void reserve(size_type __res_arg = 0); void clear() noexcept { _M_mutate(0, this->size(), 0); } bool empty() const noexcept { return this->size() == 0; } const_reference operator[] (size_type __pos) const { ; return _M_data()[__pos]; } reference operator[](size_type __pos) { ; ; _M_leak(); return _M_data()[__pos]; } const_reference at(size_type __n) const { if (__n >= this->size()) __throw_out_of_range(("basic_string::at")); return _M_data()[__n]; } reference at(size_type __n) { if (__n >= size()) __throw_out_of_range(("basic_string::at")); _M_leak(); return _M_data()[__n]; } reference front() { return operator[](0); } const_reference front() const { return operator[](0); } reference back() { return operator[](this->size() - 1); } const_reference back() const { return operator[](this->size() - 1); } 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); basic_string& append(const basic_string& __str, size_type __pos, size_type __n); basic_string& append(const _CharT* __s, size_type __n); basic_string& append(const _CharT* __s) { ; return this->append(__s, traits_type::length(__s)); } basic_string& append(size_type __n, _CharT __c); basic_string& append(initializer_list<_CharT> __l) { return this->append(__l.begin(), __l.size()); } template basic_string& append(_InputIterator __first, _InputIterator __last) { return this->replace(_M_iend(), _M_iend(), __first, __last); } void push_back(_CharT __c) { const size_type __len = 1 + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) this->reserve(__len); traits_type::assign(_M_data()[this->size()], __c); _M_rep()->_M_set_length_and_sharable(__len); } basic_string& assign(const basic_string& __str); basic_string& assign(basic_string&& __str) { this->swap(__str); return *this; } basic_string& assign(const basic_string& __str, size_type __pos, size_type __n) { return this->assign(__str._M_data() + __str._M_check(__pos, "basic_string::assign"), __str._M_limit(__pos, __n)); } basic_string& assign(const _CharT* __s, size_type __n); basic_string& assign(const _CharT* __s) { ; return this->assign(__s, traits_type::length(__s)); } basic_string& assign(size_type __n, _CharT __c) { return _M_replace_aux(size_type(0), this->size(), __n, __c); } template basic_string& assign(_InputIterator __first, _InputIterator __last) { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } basic_string& assign(initializer_list<_CharT> __l) { return this->assign(__l.begin(), __l.size()); } void insert(iterator __p, size_type __n, _CharT __c) { this->replace(__p, __p, __n, __c); } template void insert(iterator __p, _InputIterator __beg, _InputIterator __end) { this->replace(__p, __p, __beg, __end); } void insert(iterator __p, initializer_list<_CharT> __l) { ; this->insert(__p - _M_ibegin(), __l.begin(), __l.size()); } basic_string& insert(size_type __pos1, const basic_string& __str) { return this->insert(__pos1, __str, size_type(0), __str.size()); } basic_string& insert(size_type __pos1, const basic_string& __str, size_type __pos2, size_type __n) { return this->insert(__pos1, __str._M_data() + __str._M_check(__pos2, "basic_string::insert"), __str._M_limit(__pos2, __n)); } basic_string& insert(size_type __pos, const _CharT* __s, size_type __n); basic_string& insert(size_type __pos, const _CharT* __s) { ; return this->insert(__pos, __s, traits_type::length(__s)); } 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); } iterator insert(iterator __p, _CharT __c) { ; const size_type __pos = __p - _M_ibegin(); _M_replace_aux(__pos, size_type(0), size_type(1), __c); _M_rep()->_M_set_leaked(); return iterator(_M_data() + __pos); } basic_string& erase(size_type __pos = 0, size_type __n = npos) { _M_mutate(_M_check(__pos, "basic_string::erase"), _M_limit(__pos, __n), size_type(0)); return *this; } iterator erase(iterator __position) { ; const size_type __pos = __position - _M_ibegin(); _M_mutate(__pos, size_type(1), size_type(0)); _M_rep()->_M_set_leaked(); return iterator(_M_data() + __pos); } iterator erase(iterator __first, iterator __last); void pop_back() { erase(size()-1, 1); } basic_string& replace(size_type __pos, size_type __n, const basic_string& __str) { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 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)); } basic_string& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2); basic_string& replace(size_type __pos, size_type __n1, const _CharT* __s) { ; return this->replace(__pos, __n1, __s, traits_type::length(__s)); } 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); } basic_string& replace(iterator __i1, iterator __i2, const basic_string& __str) { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } basic_string& replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) { ; return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); } basic_string& replace(iterator __i1, iterator __i2, const _CharT* __s) { ; return this->replace(__i1, __i2, __s, traits_type::length(__s)); } basic_string& replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) { ; return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c); } template basic_string& replace(iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2) { ; ; typedef typename std::__is_integer<_InputIterator>::__type _Integral; return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); } basic_string& replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) { ; ; return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __k1, __k2 - __k1); } basic_string& replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2) { ; ; return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __k1, __k2 - __k1); } basic_string& replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) { ; ; return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __k1.base(), __k2 - __k1); } basic_string& replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2) { ; ; return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __k1.base(), __k2 - __k1); } basic_string& replace(iterator __i1, iterator __i2, initializer_list<_CharT> __l) { return this->replace(__i1, __i2, __l.begin(), __l.end()); } private: template basic_string& _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n, _Integer __val, __true_type) { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); } template basic_string& _M_replace_dispatch(iterator __i1, 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_safe(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2); template static _CharT* _S_construct_aux(_InIterator __beg, _InIterator __end, const _Alloc& __a, __false_type) { typedef typename iterator_traits<_InIterator>::iterator_category _Tag; return _S_construct(__beg, __end, __a, _Tag()); } template static _CharT* _S_construct_aux(_Integer __beg, _Integer __end, const _Alloc& __a, __true_type) { return _S_construct_aux_2(static_cast(__beg), __end, __a); } static _CharT* _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a) { return _S_construct(__req, __c, __a); } template static _CharT* _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) { typedef typename std::__is_integer<_InIterator>::__type _Integral; return _S_construct_aux(__beg, __end, __a, _Integral()); } template static _CharT* _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, input_iterator_tag); template static _CharT* _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, forward_iterator_tag); static _CharT* _S_construct(size_type __req, _CharT __c, const _Alloc& __a); public: size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const; void swap(basic_string& __s); 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_dataplus; } size_type find(const _CharT* __s, size_type __pos, size_type __n) const; size_type find(const basic_string& __str, size_type __pos = 0) const noexcept { return this->find(__str.data(), __pos, __str.size()); } size_type find(const _CharT* __s, size_type __pos = 0) const { ; return this->find(__s, __pos, traits_type::length(__s)); } size_type find(_CharT __c, size_type __pos = 0) const noexcept; size_type rfind(const basic_string& __str, size_type __pos = npos) const noexcept { return this->rfind(__str.data(), __pos, __str.size()); } size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const; size_type rfind(const _CharT* __s, size_type __pos = npos) const { ; return this->rfind(__s, __pos, traits_type::length(__s)); } size_type rfind(_CharT __c, size_type __pos = npos) const noexcept; 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()); } size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_first_of(const _CharT* __s, size_type __pos = 0) const { ; return this->find_first_of(__s, __pos, traits_type::length(__s)); } size_type find_first_of(_CharT __c, size_type __pos = 0) const noexcept { return this->find(__c, __pos); } 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()); } size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_last_of(const _CharT* __s, size_type __pos = npos) const { ; return this->find_last_of(__s, __pos, traits_type::length(__s)); } size_type find_last_of(_CharT __c, size_type __pos = npos) const noexcept { return this->rfind(__c, __pos); } 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()); } size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const; 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)); } size_type find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; 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()); } size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; 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)); } size_type find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; basic_string substr(size_type __pos = 0, size_type __n = npos) const { return basic_string(*this, _M_check(__pos, "basic_string::substr"), __n); } 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; } int compare(size_type __pos, size_type __n, const basic_string& __str) const; int compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2) const; int compare(const _CharT* __s) const; int compare(size_type __pos, size_type __n1, const _CharT* __s) const; int compare(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) const; }; template 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 basic_string<_CharT,_Traits,_Alloc> operator+(const _CharT* __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); template basic_string<_CharT,_Traits,_Alloc> operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); template 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 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 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 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 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 inline basic_string<_CharT, _Traits, _Alloc> operator+(const _CharT* __lhs, basic_string<_CharT, _Traits, _Alloc>&& __rhs) { return std::move(__rhs.insert(0, __lhs)); } template inline basic_string<_CharT, _Traits, _Alloc> operator+(_CharT __lhs, basic_string<_CharT, _Traits, _Alloc>&& __rhs) { return std::move(__rhs.insert(0, 1, __lhs)); } template inline basic_string<_CharT, _Traits, _Alloc> operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, const _CharT* __rhs) { return std::move(__lhs.append(__rhs)); } template inline basic_string<_CharT, _Traits, _Alloc> operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, _CharT __rhs) { return std::move(__lhs.append(1, __rhs)); } template inline bool operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) == 0; } template 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 inline bool operator==(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) == 0; } template inline bool operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) == 0; } template inline bool operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return !(__lhs == __rhs); } template inline bool operator!=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return !(__lhs == __rhs); } template inline bool operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return !(__lhs == __rhs); } template inline bool operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) < 0; } template inline bool operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) < 0; } template inline bool operator<(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) > 0; } template inline bool operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) > 0; } template inline bool operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) > 0; } template inline bool operator>(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) < 0; } template inline bool operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) <= 0; } template inline bool operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) <= 0; } template inline bool operator<=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) >= 0; } template inline bool operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) >= 0; } template inline bool operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) >= 0; } template inline bool operator>=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) <= 0; } template inline void swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, basic_string<_CharT, _Traits, _Alloc>& __rhs) { __lhs.swap(__rhs); } template basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str); template<> basic_istream& operator>>(basic_istream& __is, basic_string& __str); template 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()); } template basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); template inline basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str) { return getline(__is, __str, __is.widen('\n')); } template<> basic_istream& getline(basic_istream& __in, basic_string& __str, char __delim); template<> basic_istream& getline(basic_istream& __in, basic_string& __str, wchar_t __delim); } # 1 "/usr/include/c++/4.8/ext/string_conversions.h" 1 3 # 33 "/usr/include/c++/4.8/ext/string_conversions.h" 3 3 # 1 "/usr/include/c++/4.8/cstdlib" 1 3 # 40 "/usr/include/c++/4.8/cstdlib" 3 3 # 42 "/usr/include/c++/4.8/ext/string_conversions.h" 2 3 # 1 "/usr/include/c++/4.8/cwchar" 1 3 # 40 "/usr/include/c++/4.8/cwchar" 3 3 # 1 "/usr/include/wchar.h" 1 3 # 896 "/usr/include/wchar.h" 3 # 45 "/usr/include/c++/4.8/cwchar" 2 3 # 43 "/usr/include/c++/4.8/ext/string_conversions.h" 2 3 # 1 "/usr/include/c++/4.8/cstdio" 1 3 # 40 "/usr/include/c++/4.8/cstdio" 3 3 # 44 "/usr/include/c++/4.8/ext/string_conversions.h" 2 3 # 1 "/usr/include/c++/4.8/cerrno" 1 3 # 40 "/usr/include/c++/4.8/cerrno" 3 3 # 1 "/usr/include/errno.h" 1 3 extern "C" { # 1 "/usr/include/bits/errno.h" 1 3 # 1 "/usr/include/linux/errno.h" 1 3 # 1 "/usr/include/asm/errno.h" 1 3 # 1 "/usr/include/asm-generic/errno.h" 1 3 # 1 "/usr/include/asm-generic/errno-base.h" 1 3 # 38 "/usr/include/asm-generic/errno-base.h" 3 # 5 "/usr/include/asm-generic/errno.h" 2 3 # 29 "/usr/include/asm-generic/errno.h" 3 # 96 "/usr/include/asm-generic/errno.h" 3 # 104 "/usr/include/asm-generic/errno.h" 3 # 2 "/usr/include/asm/errno.h" 2 3 # 2 "/usr/include/linux/errno.h" 2 3 # 25 "/usr/include/bits/errno.h" 2 3 extern int *__errno_location (void) throw () __attribute__ ((__const__)); # 36 "/usr/include/errno.h" 2 3 extern char *program_invocation_name, *program_invocation_short_name; } typedef int error_t; # 42 "/usr/include/c++/4.8/cerrno" 2 3 # 45 "/usr/include/c++/4.8/ext/string_conversions.h" 2 3 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template _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::__min || __tmp > __numeric_traits::__max))) std::__throw_out_of_range(__name); else __ret = __tmp; if (__idx) *__idx = __endptr - __str; return __ret; } template _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); } } # 2816 "/usr/include/c++/4.8/bits/basic_string.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { inline int stoi(const string& __str, size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa(&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(&std::vsnprintf, 4 * sizeof(int), "%d", __val); } inline string to_string(unsigned __val) { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(unsigned), "%u", __val); } inline string to_string(long __val) { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(long), "%ld", __val); } inline string to_string(unsigned long __val) { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(unsigned long), "%lu", __val); } inline string to_string(long long __val) { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(long long), "%lld", __val); } inline string to_string(unsigned long long __val) { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(unsigned long long), "%llu", __val); } inline string to_string(float __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, "%f", __val); } inline string to_string(double __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, "%f", __val); } inline string to_string(long double __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, "%Lf", __val); } inline int stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa(&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(&std::vswprintf, 4 * sizeof(int), L"%d", __val); } inline wstring to_wstring(unsigned __val) { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(unsigned), L"%u", __val); } inline wstring to_wstring(long __val) { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long), L"%ld", __val); } inline wstring to_wstring(unsigned long __val) { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(unsigned long), L"%lu", __val); } inline wstring to_wstring(long long __val) { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long long), L"%lld", __val); } inline wstring to_wstring(unsigned long long __val) { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(unsigned long long), L"%llu", __val); } inline wstring to_wstring(float __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vswprintf, __n, L"%f", __val); } inline wstring to_wstring(double __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vswprintf, __n, L"%f", __val); } inline wstring to_wstring(long double __val) { const int __n = __gnu_cxx::__numeric_traits::__max_exponent10 + 20; return __gnu_cxx::__to_xstring(&std::vswprintf, __n, L"%Lf", __val); } } # 1 "/usr/include/c++/4.8/bits/functional_hash.h" 1 3 # 34 "/usr/include/c++/4.8/bits/functional_hash.h" 3 3 # 1 "/usr/include/c++/4.8/bits/hash_bytes.h" 1 3 # 34 "/usr/include/c++/4.8/bits/hash_bytes.h" 3 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 "/usr/include/c++/4.8/bits/functional_hash.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct __hash_base { typedef _Result result_type; typedef _Arg argument_type; }; template struct hash; template struct hash<_Tp*> : public __hash_base { size_t operator()(_Tp* __p) const noexcept { return reinterpret_cast(__p); } }; # 78 "/usr/include/c++/4.8/bits/functional_hash.h" 3 template< > struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; template< > struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; struct _Hash_impl { static size_t hash(const void* __ptr, size_t __clength, size_t __seed = static_cast(0xc70f6907UL)) { return _Hash_bytes(__ptr, __clength, __seed); } template static size_t hash(const _Tp& __val) { return hash(&__val, sizeof(__val)); } template static size_t __hash_combine(const _Tp& __val, size_t __hash) { return hash(&__val, sizeof(__val), __hash); } }; struct _Fnv_hash_impl { static size_t hash(const void* __ptr, size_t __clength, size_t __seed = static_cast(2166136261UL)) { return _Fnv_hash_bytes(__ptr, __clength, __seed); } template static size_t hash(const _Tp& __val) { return hash(&__val, sizeof(__val)); } template static size_t __hash_combine(const _Tp& __val, size_t __hash) { return hash(&__val, sizeof(__val), __hash); } }; template<> struct hash : public __hash_base { size_t operator()(float __val) const noexcept { return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; } }; template<> struct hash : public __hash_base { size_t operator()(double __val) const noexcept { return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; } }; template<> struct hash : public __hash_base { __attribute__ ((__pure__)) size_t operator()(long double __val) const noexcept; }; template struct __is_fast_hash : public std::true_type { }; template<> struct __is_fast_hash> : public std::false_type { }; } # 3034 "/usr/include/c++/4.8/bits/basic_string.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template<> struct hash : public __hash_base { size_t operator()(const string& __s) const noexcept { return std::_Hash_impl::hash(__s.data(), __s.length()); } }; template<> struct __is_fast_hash> : std::false_type { }; template<> struct hash : public __hash_base { 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> : std::false_type { }; template<> struct hash : public __hash_base { 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> : std::false_type { }; template<> struct hash : public __hash_base { 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> : std::false_type { }; } # 53 "/usr/include/c++/4.8/string" 2 3 # 1 "/usr/include/c++/4.8/bits/basic_string.tcc" 1 3 # 41 "/usr/include/c++/4.8/bits/basic_string.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template const typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; template const _CharT basic_string<_CharT, _Traits, _Alloc>:: _Rep::_S_terminal = _CharT(); template const typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>::npos; template typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[ (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) / sizeof(size_type)]; template template _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, input_iterator_tag) { if (__beg == __end && __a == _Alloc()) return _S_empty_rep()._M_refdata(); _CharT __buf[128]; size_type __len = 0; while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT)) { __buf[__len++] = *__beg; ++__beg; } _Rep* __r = _Rep::_S_create(__len, size_type(0), __a); _M_copy(__r->_M_refdata(), __buf, __len); if (true) { while (__beg != __end) { if (__len == __r->_M_capacity) { _Rep* __another = _Rep::_S_create(__len + 1, __len, __a); _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len); __r->_M_destroy(__a); __r = __another; } __r->_M_refdata()[__len++] = *__beg; ++__beg; } } if (false) { __r->_M_destroy(__a); ; } __r->_M_set_length_and_sharable(__len); return __r->_M_refdata(); } template template _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, forward_iterator_tag) { if (__beg == __end && __a == _Alloc()) return _S_empty_rep()._M_refdata(); if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) __throw_logic_error(("basic_string::_S_construct null not valid")); const size_type __dnew = static_cast(std::distance(__beg, __end)); _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); if (true) { _S_copy_chars(__r->_M_refdata(), __beg, __end); } if (false) { __r->_M_destroy(__a); ; } __r->_M_set_length_and_sharable(__dnew); return __r->_M_refdata(); } template _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(size_type __n, _CharT __c, const _Alloc& __a) { if (__n == 0 && __a == _Alloc()) return _S_empty_rep()._M_refdata(); _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); if (__n) _M_assign(__r->_M_refdata(), __n, __c); __r->_M_set_length_and_sharable(__n); return __r->_M_refdata(); } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str) : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()), __str.get_allocator()), __str.get_allocator()) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _Alloc& __a) : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str, size_type __pos, size_type __n) : _M_dataplus(_S_construct(__str._M_data() + __str._M_check(__pos, "basic_string::basic_string"), __str._M_data() + __str._M_limit(__pos, __n) + __pos, _Alloc()), _Alloc()) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str, size_type __pos, size_type __n, const _Alloc& __a) : _M_dataplus(_S_construct(__str._M_data() + __str._M_check(__pos, "basic_string::basic_string"), __str._M_data() + __str._M_limit(__pos, __n) + __pos, __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _CharT* __s, const _Alloc& __a) : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : __s + npos, __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(size_type __n, _CharT __c, const _Alloc& __a) : _M_dataplus(_S_construct(__n, __c, __a), __a) { } template template basic_string<_CharT, _Traits, _Alloc>:: basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) : _M_dataplus(_S_construct(__beg, __end, __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>:: basic_string(initializer_list<_CharT> __l, const _Alloc& __a) : _M_dataplus(_S_construct(__l.begin(), __l.end(), __a), __a) { } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: assign(const basic_string& __str) { if (_M_rep() != __str._M_rep()) { const allocator_type __a = this->get_allocator(); _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); _M_rep()->_M_dispose(__a); _M_data(__tmp); } return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: assign(const _CharT* __s, size_type __n) { ; _M_check_length(this->size(), __n, "basic_string::assign"); if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) return _M_replace_safe(size_type(0), this->size(), __s, __n); else { const size_type __pos = __s - _M_data(); if (__pos >= __n) _M_copy(_M_data(), __s, __n); else if (__pos) _M_move(_M_data(), __s, __n); _M_rep()->_M_set_length_and_sharable(__n); return *this; } } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(size_type __n, _CharT __c) { if (__n) { _M_check_length(size_type(0), __n, "basic_string::append"); const size_type __len = __n + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) this->reserve(__len); _M_assign(_M_data() + this->size(), __n, __c); _M_rep()->_M_set_length_and_sharable(__len); } return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const _CharT* __s, size_type __n) { ; if (__n) { _M_check_length(size_type(0), __n, "basic_string::append"); const size_type __len = __n + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) { if (_M_disjunct(__s)) this->reserve(__len); else { const size_type __off = __s - _M_data(); this->reserve(__len); __s = _M_data() + __off; } } _M_copy(_M_data() + this->size(), __s, __n); _M_rep()->_M_set_length_and_sharable(__len); } return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const basic_string& __str) { const size_type __size = __str.size(); if (__size) { const size_type __len = __size + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) this->reserve(__len); _M_copy(_M_data() + this->size(), __str._M_data(), __size); _M_rep()->_M_set_length_and_sharable(__len); } return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const basic_string& __str, size_type __pos, size_type __n) { __str._M_check(__pos, "basic_string::append"); __n = __str._M_limit(__pos, __n); if (__n) { const size_type __len = __n + this->size(); if (__len > this->capacity() || _M_rep()->_M_is_shared()) this->reserve(__len); _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n); _M_rep()->_M_set_length_and_sharable(__len); } return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: insert(size_type __pos, const _CharT* __s, size_type __n) { ; _M_check(__pos, "basic_string::insert"); _M_check_length(size_type(0), __n, "basic_string::insert"); if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) return _M_replace_safe(__pos, size_type(0), __s, __n); else { const size_type __off = __s - _M_data(); _M_mutate(__pos, 0, __n); __s = _M_data() + __off; _CharT* __p = _M_data() + __pos; if (__s + __n <= __p) _M_copy(__p, __s, __n); else if (__s >= __p) _M_copy(__p, __s + __n, __n); else { const size_type __nleft = __p - __s; _M_copy(__p, __s, __nleft); _M_copy(__p + __nleft, __p + __n, __n - __nleft); } return *this; } } template typename basic_string<_CharT, _Traits, _Alloc>::iterator basic_string<_CharT, _Traits, _Alloc>:: erase(iterator __first, iterator __last) { ; const size_type __size = __last - __first; if (__size) { const size_type __pos = __first - _M_ibegin(); _M_mutate(__pos, __size, size_type(0)); _M_rep()->_M_set_leaked(); return iterator(_M_data() + __pos); } else return __first; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { ; _M_check(__pos, "basic_string::replace"); __n1 = _M_limit(__pos, __n1); _M_check_length(__n1, __n2, "basic_string::replace"); bool __left; if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) return _M_replace_safe(__pos, __n1, __s, __n2); else if ((__left = __s + __n2 <= _M_data() + __pos) || _M_data() + __pos + __n1 <= __s) { size_type __off = __s - _M_data(); __left ? __off : (__off += __n2 - __n1); _M_mutate(__pos, __n1, __n2); _M_copy(_M_data() + __pos, _M_data() + __off, __n2); return *this; } else { const basic_string __tmp(__s, __n2); return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2); } } template void basic_string<_CharT, _Traits, _Alloc>::_Rep:: _M_destroy(const _Alloc& __a) throw () { const size_type __size = sizeof(_Rep_base) + (this->_M_capacity + 1) * sizeof(_CharT); _Raw_bytes_alloc(__a).deallocate(reinterpret_cast(this), __size); } template void basic_string<_CharT, _Traits, _Alloc>:: _M_leak_hard() { if (_M_rep() == &_S_empty_rep()) return; if (_M_rep()->_M_is_shared()) _M_mutate(0, 0, 0); _M_rep()->_M_set_leaked(); } template void basic_string<_CharT, _Traits, _Alloc>:: _M_mutate(size_type __pos, size_type __len1, size_type __len2) { const size_type __old_size = this->size(); const size_type __new_size = __old_size + __len2 - __len1; const size_type __how_much = __old_size - __pos - __len1; if (__new_size > this->capacity() || _M_rep()->_M_is_shared()) { const allocator_type __a = get_allocator(); _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a); if (__pos) _M_copy(__r->_M_refdata(), _M_data(), __pos); if (__how_much) _M_copy(__r->_M_refdata() + __pos + __len2, _M_data() + __pos + __len1, __how_much); _M_rep()->_M_dispose(__a); _M_data(__r->_M_refdata()); } else if (__how_much && __len1 != __len2) { _M_move(_M_data() + __pos + __len2, _M_data() + __pos + __len1, __how_much); } _M_rep()->_M_set_length_and_sharable(__new_size); } template void basic_string<_CharT, _Traits, _Alloc>:: reserve(size_type __res) { if (__res != this->capacity() || _M_rep()->_M_is_shared()) { if (__res < this->size()) __res = this->size(); const allocator_type __a = get_allocator(); _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); _M_rep()->_M_dispose(__a); _M_data(__tmp); } } template void basic_string<_CharT, _Traits, _Alloc>:: swap(basic_string& __s) { if (_M_rep()->_M_is_leaked()) _M_rep()->_M_set_sharable(); if (__s._M_rep()->_M_is_leaked()) __s._M_rep()->_M_set_sharable(); if (this->get_allocator() == __s.get_allocator()) { _CharT* __tmp = _M_data(); _M_data(__s._M_data()); __s._M_data(__tmp); } else { const basic_string __tmp1(_M_ibegin(), _M_iend(), __s.get_allocator()); const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), this->get_allocator()); *this = __tmp2; __s = __tmp1; } } template typename basic_string<_CharT, _Traits, _Alloc>::_Rep* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _S_create(size_type __capacity, size_type __old_capacity, const _Alloc& __alloc) { if (__capacity > _S_max_size) __throw_length_error(("basic_string::_S_create")); const size_type __pagesize = 4096; const size_type __malloc_header_size = 4 * sizeof(void*); if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) __capacity = 2 * __old_capacity; size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); const size_type __adj_size = __size + __malloc_header_size; if (__adj_size > __pagesize && __capacity > __old_capacity) { const size_type __extra = __pagesize - __adj_size % __pagesize; __capacity += __extra / sizeof(_CharT); if (__capacity > _S_max_size) __capacity = _S_max_size; __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); } void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); _Rep *__p = new (__place) _Rep; __p->_M_capacity = __capacity; __p->_M_set_sharable(); return __p; } template _CharT* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _M_clone(const _Alloc& __alloc, size_type __res) { const size_type __requested_cap = this->_M_length + __res; _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity, __alloc); if (this->_M_length) _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length); __r->_M_set_length_and_sharable(this->_M_length); return __r->_M_refdata(); } template void basic_string<_CharT, _Traits, _Alloc>:: resize(size_type __n, _CharT __c) { const size_type __size = this->size(); _M_check_length(__size, __n, "basic_string::resize"); if (__size < __n) this->append(__n - __size, __c); else if (__n < __size) this->erase(__n); } template template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2, __false_type) { const basic_string __s(__k1, __k2); const size_type __n1 = __i2 - __i1; _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch"); return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(), __s.size()); } template 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"); _M_mutate(__pos1, __n1, __n2); if (__n2) _M_assign(_M_data() + __pos1, __n2, __c); return *this; } template basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2) { _M_mutate(__pos1, __n1, __n2); if (__n2) _M_copy(_M_data() + __pos1, __s, __n2); return *this; } template 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 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 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) _M_copy(__s, _M_data() + __pos, __n); return __n; } template 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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) { if (true) { __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); } if (false) { __in._M_setstate(__ios_base::badbit); ; } if (false) { __in._M_setstate(__ios_base::badbit); } } if (!__extracted) __err |= __ios_base::failbit; if (__err) __in.setstate(__err); return __in; } template 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) { if (true) { __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; } if (false) { __in._M_setstate(__ios_base::badbit); ; } if (false) { __in._M_setstate(__ios_base::badbit); } } if (!__extracted) __err |= __ios_base::failbit; if (__err) __in.setstate(__err); return __in; } extern template class basic_string; extern template basic_istream& operator>>(basic_istream&, string&); extern template basic_ostream& operator<<(basic_ostream&, const string&); extern template basic_istream& getline(basic_istream&, string&, char); extern template basic_istream& getline(basic_istream&, string&); extern template class basic_string; extern template basic_istream& operator>>(basic_istream&, wstring&); extern template basic_ostream& operator<<(basic_ostream&, const wstring&); extern template basic_istream& getline(basic_istream&, wstring&, wchar_t); extern template basic_istream& getline(basic_istream&, wstring&); } # 54 "/usr/include/c++/4.8/string" 2 3 # 42 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/limits" 1 3 # 41 "/usr/include/c++/4.8/limits" 3 3 # 97 "/usr/include/c++/4.8/limits" 3 # 111 "/usr/include/c++/4.8/limits" 3 # 125 "/usr/include/c++/4.8/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 }; 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; 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; }; template 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 struct numeric_limits : public numeric_limits<_Tp> { }; template struct numeric_limits : public numeric_limits<_Tp> { }; template struct numeric_limits : public numeric_limits<_Tp> { }; template<> struct numeric_limits { 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 { 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(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 { static constexpr bool is_specialized = true; static constexpr signed char min() noexcept { return -127 - 1; } static constexpr signed char max() noexcept { return 127; } 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(0); } static constexpr signed char quiet_NaN() noexcept { return static_cast(0); } static constexpr signed char signaling_NaN() noexcept { return static_cast(0); } static constexpr signed char denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr unsigned char min() noexcept { return 0; } static constexpr unsigned char max() noexcept { return 127 * 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(0); } static constexpr unsigned char quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned char signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned char denorm_min() noexcept { return static_cast(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 { 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 { 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 { 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 { static constexpr bool is_specialized = true; static constexpr short min() noexcept { return -32767 - 1; } static constexpr short max() noexcept { return 32767; } 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 { static constexpr bool is_specialized = true; static constexpr unsigned short min() noexcept { return 0; } static constexpr unsigned short max() noexcept { return 32767 * 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(0); } static constexpr unsigned short quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned short signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned short denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr int min() noexcept { return -2147483647 - 1; } static constexpr int max() noexcept { return 2147483647; } 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(0); } static constexpr int quiet_NaN() noexcept { return static_cast(0); } static constexpr int signaling_NaN() noexcept { return static_cast(0); } static constexpr int denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr unsigned int min() noexcept { return 0; } static constexpr unsigned int max() noexcept { return 2147483647 * 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(0); } static constexpr unsigned int quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned int signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned int denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr long min() noexcept { return -9223372036854775807L - 1; } static constexpr long max() noexcept { return 9223372036854775807L; } 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(0); } static constexpr long quiet_NaN() noexcept { return static_cast(0); } static constexpr long signaling_NaN() noexcept { return static_cast(0); } static constexpr long denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr unsigned long min() noexcept { return 0; } static constexpr unsigned long max() noexcept { return 9223372036854775807L * 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(0); } static constexpr unsigned long quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned long signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned long denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr long long min() noexcept { return -0x7fffffffffffffff - 1; } static constexpr long long max() noexcept { return 0x7fffffffffffffff; } 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(0); } static constexpr long long quiet_NaN() noexcept { return static_cast(0); } static constexpr long long signaling_NaN() noexcept { return static_cast(0); } static constexpr long long denorm_min() noexcept { return static_cast(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 { static constexpr bool is_specialized = true; static constexpr unsigned long long min() noexcept { return 0; } static constexpr unsigned long long max() noexcept { return 0x7fffffffffffffff * 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(0); } static constexpr unsigned long long quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned long long signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned long long denorm_min() noexcept { return static_cast(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; }; # 1550 "/usr/include/c++/4.8/limits" 3 template<> struct numeric_limits { static constexpr bool is_specialized = true; static constexpr float min() noexcept { return 1.17549435e-38F; } static constexpr float max() noexcept { return 3.40282347e+38F; } static constexpr float lowest() noexcept { return -3.40282347e+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.19209290e-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.40129846e-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 { static constexpr bool is_specialized = true; static constexpr double min() noexcept { return 2.2250738585072014e-308; } static constexpr double max() noexcept { return 1.7976931348623157e+308; } static constexpr double lowest() noexcept { return -1.7976931348623157e+308; } 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 2.2204460492503131e-16; } 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 4.9406564584124654e-324; } 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 { static constexpr bool is_specialized = true; static constexpr long double min() noexcept { return 3.36210314311209350626e-4932L; } static constexpr long double max() noexcept { return 1.18973149535723176502e+4932L; } static constexpr long double lowest() noexcept { return -1.18973149535723176502e+4932L; } static constexpr int digits = 64; static constexpr int digits10 = 18; static constexpr int max_digits10 = (2 + (64) * 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.08420217248550443401e-19L; } 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 3.64519953188247460253e-4951L; } 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; }; } # 1785 "/usr/include/c++/4.8/limits" 3 # 44 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/bits/random.h" 1 3 # 1 "/usr/include/c++/4.8/vector" 1 3 # 59 "/usr/include/c++/4.8/vector" 3 3 # 1 "/usr/include/c++/4.8/bits/stl_uninitialized.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct __uninitialized_copy { template static _ForwardIterator __uninit_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { _ForwardIterator __cur = __result; if (true) { for (; __first != __last; ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first); return __cur; } if (false) { std::_Destroy(__result, __cur); ; } } }; template<> struct __uninitialized_copy { template static _ForwardIterator __uninit_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { return std::copy(__first, __last, __result); } }; template 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; return std::__uninitialized_copy<(__is_trivial(_ValueType1) && __is_trivial(_ValueType2))>:: __uninit_copy(__first, __last, __result); } template struct __uninitialized_fill { template static void __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x) { _ForwardIterator __cur = __first; if (true) { for (; __cur != __last; ++__cur) std::_Construct(std::__addressof(*__cur), __x); } if (false) { std::_Destroy(__first, __cur); ; } } }; template<> struct __uninitialized_fill { template static void __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x) { std::fill(__first, __last, __x); } }; template inline void uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::__uninitialized_fill<__is_trivial(_ValueType)>:: __uninit_fill(__first, __last, __x); } template struct __uninitialized_fill_n { template static void __uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { _ForwardIterator __cur = __first; if (true) { for (; __n > 0; --__n, ++__cur) std::_Construct(std::__addressof(*__cur), __x); } if (false) { std::_Destroy(__first, __cur); ; } } }; template<> struct __uninitialized_fill_n { template static void __uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { std::fill_n(__first, __n, __x); } }; template inline void uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::__uninitialized_fill_n<__is_trivial(_ValueType)>:: __uninit_fill_n(__first, __n, __x); } template _ForwardIterator __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _Allocator& __alloc) { _ForwardIterator __cur = __result; if (true) { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; for (; __first != __last; ++__first, ++__cur) __traits::construct(__alloc, std::__addressof(*__cur), *__first); return __cur; } if (false) { std::_Destroy(__result, __cur, __alloc); ; } } template inline _ForwardIterator __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, allocator<_Tp>&) { return std::uninitialized_copy(__first, __last, __result); } template 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 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 void __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x, _Allocator& __alloc) { _ForwardIterator __cur = __first; if (true) { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; for (; __cur != __last; ++__cur) __traits::construct(__alloc, std::__addressof(*__cur), __x); } if (false) { std::_Destroy(__first, __cur, __alloc); ; } } template inline void __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x, allocator<_Tp2>&) { std::uninitialized_fill(__first, __last, __x); } template void __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, const _Tp& __x, _Allocator& __alloc) { _ForwardIterator __cur = __first; if (true) { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; for (; __n > 0; --__n, ++__cur) __traits::construct(__alloc, std::__addressof(*__cur), __x); } if (false) { std::_Destroy(__first, __cur, __alloc); ; } } template inline void __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, const _Tp& __x, allocator<_Tp2>&) { std::uninitialized_fill_n(__first, __n, __x); } template 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); if (true) { return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); } if (false) { std::_Destroy(__result, __mid, __alloc); ; } } template 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); if (true) { return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); } if (false) { std::_Destroy(__result, __mid, __alloc); ; } } template 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); if (true) { return std::__uninitialized_move_a(__first, __last, __mid, __alloc); } if (false) { std::_Destroy(__result, __mid, __alloc); ; } } template 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); if (true) { std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); } if (false) { std::_Destroy(__first2, __mid2, __alloc); ; } } template struct __uninitialized_default_1 { template static void __uninit_default(_ForwardIterator __first, _ForwardIterator __last) { _ForwardIterator __cur = __first; if (true) { for (; __cur != __last; ++__cur) std::_Construct(std::__addressof(*__cur)); } if (false) { std::_Destroy(__first, __cur); ; } } }; template<> struct __uninitialized_default_1 { template static void __uninit_default(_ForwardIterator __first, _ForwardIterator __last) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::fill(__first, __last, _ValueType()); } }; template struct __uninitialized_default_n_1 { template static void __uninit_default_n(_ForwardIterator __first, _Size __n) { _ForwardIterator __cur = __first; if (true) { for (; __n > 0; --__n, ++__cur) std::_Construct(std::__addressof(*__cur)); } if (false) { std::_Destroy(__first, __cur); ; } } }; template<> struct __uninitialized_default_n_1 { template static void __uninit_default_n(_ForwardIterator __first, _Size __n) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::fill_n(__first, __n, _ValueType()); } }; template inline void __uninitialized_default(_ForwardIterator __first, _ForwardIterator __last) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::__uninitialized_default_1<__is_trivial(_ValueType)>:: __uninit_default(__first, __last); } template inline void __uninitialized_default_n(_ForwardIterator __first, _Size __n) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::__uninitialized_default_n_1<__is_trivial(_ValueType)>:: __uninit_default_n(__first, __n); } template void __uninitialized_default_a(_ForwardIterator __first, _ForwardIterator __last, _Allocator& __alloc) { _ForwardIterator __cur = __first; if (true) { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; for (; __cur != __last; ++__cur) __traits::construct(__alloc, std::__addressof(*__cur)); } if (false) { std::_Destroy(__first, __cur, __alloc); ; } } template inline void __uninitialized_default_a(_ForwardIterator __first, _ForwardIterator __last, allocator<_Tp>&) { std::__uninitialized_default(__first, __last); } template void __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, _Allocator& __alloc) { _ForwardIterator __cur = __first; if (true) { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; for (; __n > 0; --__n, ++__cur) __traits::construct(__alloc, std::__addressof(*__cur)); } if (false) { std::_Destroy(__first, __cur, __alloc); ; } } template inline void __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, allocator<_Tp>&) { std::__uninitialized_default_n(__first, __n); } template _ForwardIterator __uninitialized_copy_n(_InputIterator __first, _Size __n, _ForwardIterator __result, input_iterator_tag) { _ForwardIterator __cur = __result; if (true) { for (; __n > 0; --__n, ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first); return __cur; } if (false) { std::_Destroy(__result, __cur); ; } } template inline _ForwardIterator __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, _ForwardIterator __result, random_access_iterator_tag) { return std::uninitialized_copy(__first, __first + __n, __result); } template inline _ForwardIterator uninitialized_copy_n(_InputIterator __first, _Size __n, _ForwardIterator __result) { return std::__uninitialized_copy_n(__first, __n, __result, std::__iterator_category(__first)); } } # 64 "/usr/include/c++/4.8/vector" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_vector.h" 1 3 # 65 "/usr/include/c++/4.8/bits/stl_vector.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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(0), _M_finish(0), _M_end_of_storage(0) { } _Vector_impl(_Tp_alloc_type const& __a) : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) { } _Vector_impl(_Tp_alloc_type&& __a) : _Tp_alloc_type(std::move(__a)), _M_start(0), _M_finish(0), _M_end_of_storage(0) { } void _M_swap_data(_Vector_impl& __x) { 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(&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) : _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) : _M_impl(std::move(__a)) { } _Vector_base(_Vector_base&& __x) : _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() { _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) { return __n != 0 ? _M_impl.allocate(__n) : 0; } void _M_deallocate(pointer __p, size_t __n) { if (__p) _M_impl.deallocate(__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; } }; template > 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 iterator; typedef __gnu_cxx::__normal_iterator const_iterator; typedef std::reverse_iterator const_reverse_iterator; typedef std::reverse_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() : _Base() { } explicit vector(const allocator_type& __a) : _Base(__a) { } explicit vector(size_type __n, const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_default_initialize(__n); } vector(size_type __n, const value_type& __value, const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_fill_initialize(__n, __value); } # 300 "/usr/include/c++/4.8/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()); } 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) : _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(); } } vector(initializer_list __l, const allocator_type& __a = allocator_type()) : _Base(__a) { _M_range_initialize(__l.begin(), __l.end(), random_access_iterator_tag()); } template> vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Base(__a) { _M_initialize_dispatch(__first, __last, __false_type()); } # 407 "/usr/include/c++/4.8/bits/stl_vector.h" 3 ~vector() noexcept { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); } vector& operator=(const vector& __x); 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()); return *this; } vector& operator=(initializer_list __l) { this->assign(__l.begin(), __l.end()); return *this; } void assign(size_type __n, const value_type& __val) { _M_fill_assign(__n, __val); } template> void assign(_InputIterator __first, _InputIterator __last) { _M_assign_dispatch(__first, __last, __false_type()); } # 510 "/usr/include/c++/4.8/bits/stl_vector.h" 3 void assign(initializer_list __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()); } 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); } 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); } # 712 "/usr/include/c++/4.8/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(); } void reserve(size_type __n); reference operator[](size_type __n) { return *(this->_M_impl._M_start + __n); } const_reference operator[](size_type __n) const { return *(this->_M_impl._M_start + __n); } protected: void _M_range_check(size_type __n) const { if (__n >= this->size()) __throw_out_of_range(("vector::_M_range_check")); } 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]; } reference front() { return *begin(); } const_reference front() const { return *begin(); } reference back() { return *(end() - 1); } const_reference back() const { return *(end() - 1); } _Tp* data() noexcept { return std::__addressof(front()); } const _Tp* data() const noexcept { return std::__addressof(front()); } 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 void emplace_back(_Args&&... __args); void pop_back() { --this->_M_impl._M_finish; _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); } template iterator emplace(iterator __position, _Args&&... __args); iterator insert(iterator __position, const value_type& __x); iterator insert(iterator __position, value_type&& __x) { return emplace(__position, std::move(__x)); } void insert(iterator __position, initializer_list __l) { this->insert(__position, __l.begin(), __l.end()); } void insert(iterator __position, size_type __n, const value_type& __x) { _M_fill_insert(__position, __n, __x); } template> void insert(iterator __position, _InputIterator __first, _InputIterator __last) { _M_insert_dispatch(__position, __first, __last, __false_type()); } # 1058 "/usr/include/c++/4.8/bits/stl_vector.h" 3 iterator erase(iterator __position); iterator erase(iterator __first, iterator __last); 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 pointer _M_allocate_and_copy(size_type __n, _ForwardIterator __first, _ForwardIterator __last) { pointer __result = this->_M_allocate(__n); if (true) { std::__uninitialized_copy_a(__first, __last, __result, _M_get_Tp_allocator()); return __result; } if (false) { _M_deallocate(__result, __n); ; } } template void _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) { this->_M_impl._M_start = _M_allocate(static_cast(__n)); this->_M_impl._M_end_of_storage = this->_M_impl._M_start + static_cast(__n); _M_fill_initialize(static_cast(__n), __value); } template 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 void _M_range_initialize(_InputIterator __first, _InputIterator __last, std::input_iterator_tag) { for (; __first != __last; ++__first) emplace_back(*__first); } template 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) { std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, _M_get_Tp_allocator()); this->_M_impl._M_finish = this->_M_impl._M_end_of_storage; } void _M_default_initialize(size_type __n) { std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, _M_get_Tp_allocator()); this->_M_impl._M_finish = this->_M_impl._M_end_of_storage; } template void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) { _M_fill_assign(__n, __val); } template void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, __false_type) { typedef typename std::iterator_traits<_InputIterator>:: iterator_category _IterCategory; _M_assign_aux(__first, __last, _IterCategory()); } template void _M_assign_aux(_InputIterator __first, _InputIterator __last, std::input_iterator_tag); template void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, std::forward_iterator_tag); void _M_fill_assign(size_type __n, const value_type& __val); template void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, __true_type) { _M_fill_insert(__pos, __n, __val); } template 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 void _M_range_insert(iterator __pos, _InputIterator __first, _InputIterator __last, std::input_iterator_tag); template 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 void _M_insert_aux(iterator __position, _Args&&... __args); template 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) { std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish = __pos; } private: void _M_move_assign(vector&& __x, std::true_type) noexcept { const vector __tmp(std::move(*this)); this->_M_impl._M_swap_data(__x._M_impl); if (_Alloc_traits::_S_propagate_on_move_assign()) 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 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())); } template 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 inline bool operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__x == __y); } template inline bool operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return __y < __x; } template inline bool operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__y < __x); } template inline bool operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__x < __y); } template inline void swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) { __x.swap(__y); } } # 65 "/usr/include/c++/4.8/vector" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_bvector.h" 1 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 { _Bit_type * _M_p; unsigned int _M_offset; _Bit_iterator_base(_Bit_type * __x, unsigned int __y) : _M_p(__x), _M_offset(__y) { } void _M_bump_up() { if (_M_offset++ == int(_S_word_bit) - 1) { _M_offset = 0; ++_M_p; } } void _M_bump_down() { if (_M_offset-- == 0) { _M_offset = int(_S_word_bit) - 1; --_M_p; } } void _M_incr(ptrdiff_t __i) { difference_type __n = __i + _M_offset; _M_p += __n / int(_S_word_bit); __n = __n % int(_S_word_bit); if (__n < 0) { __n += int(_S_word_bit); --_M_p; } _M_offset = static_cast(__n); } bool operator==(const _Bit_iterator_base& __i) const { return _M_p == __i._M_p && _M_offset == __i._M_offset; } bool operator<(const _Bit_iterator_base& __i) const { return _M_p < __i._M_p || (_M_p == __i._M_p && _M_offset < __i._M_offset); } bool operator!=(const _Bit_iterator_base& __i) const { return !(*this == __i); } bool operator>(const _Bit_iterator_base& __i) const { return __i < *this; } bool operator<=(const _Bit_iterator_base& __i) const { return !(__i < *this); } bool operator>=(const _Bit_iterator_base& __i) const { return !(*this < __i); } }; inline ptrdiff_t operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { return (int(_S_word_bit) * (__x._M_p - __y._M_p) + __x._M_offset - __y._M_offset); } struct _Bit_iterator : public _Bit_iterator_base { typedef _Bit_reference reference; typedef _Bit_reference* pointer; typedef _Bit_iterator iterator; _Bit_iterator() : _Bit_iterator_base(0, 0) { } _Bit_iterator(_Bit_type * __x, unsigned int __y) : _Bit_iterator_base(__x, __y) { } 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) { } const_reference operator*() const { return _Bit_reference(_M_p, 1UL << _M_offset); } const_iterator& operator++() { _M_bump_up(); return *this; } const_iterator operator++(int) { const_iterator __tmp = *this; _M_bump_up(); return __tmp; } const_iterator& operator--() { _M_bump_down(); return *this; } const_iterator operator--(int) { const_iterator __tmp = *this; _M_bump_down(); return __tmp; } const_iterator& operator+=(difference_type __i) { _M_incr(__i); return *this; } const_iterator& operator-=(difference_type __i) { *this += -__i; return *this; } const_iterator operator+(difference_type __i) const { const_iterator __tmp = *this; return __tmp += __i; } const_iterator operator-(difference_type __i) const { const_iterator __tmp = *this; return __tmp -= __i; } const_reference operator[](difference_type __i) const { return *(*this + __i); } }; inline _Bit_const_iterator operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) { return __x + __n; } inline void __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x) { for (; __first != __last; ++__first) *__first = __x; } inline void fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) { if (__first._M_p != __last._M_p) { std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0); __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x); __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x); } else __fill_bvector(__first, __last, __x); } template struct _Bvector_base { typedef typename _Alloc::template rebind<_Bit_type>::other _Bit_alloc_type; struct _Bvector_impl : public _Bit_alloc_type { _Bit_iterator _M_start; _Bit_iterator _M_finish; _Bit_type* _M_end_of_storage; _Bvector_impl() : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0) { } _Bvector_impl(const _Bit_alloc_type& __a) : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0) { } _Bvector_impl(_Bit_alloc_type&& __a) : _Bit_alloc_type(std::move(__a)), _M_start(), _M_finish(), _M_end_of_storage(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(&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 = 0; } ~_Bvector_base() { this->_M_deallocate(); } protected: _Bvector_impl _M_impl; _Bit_type* _M_allocate(size_t __n) { return _M_impl.allocate(_S_nword(__n)); } void _M_deallocate() { if (_M_impl._M_start._M_p) _M_impl.deallocate(_M_impl._M_start._M_p, _M_impl._M_end_of_storage - _M_impl._M_start._M_p); } static size_t _S_nword(size_t __n) { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } }; } namespace std __attribute__ ((__visibility__ ("default"))) { template class vector : protected _Bvector_base<_Alloc> { typedef _Bvector_base<_Alloc> _Base; template 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_reverse_iterator; typedef std::reverse_iterator reverse_iterator; typedef _Alloc allocator_type; allocator_type get_allocator() const { return _Base::get_allocator(); } protected: using _Base::_M_allocate; using _Base::_M_deallocate; using _Base::_S_nword; using _Base::_M_get_Bit_allocator; public: vector() : _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_of_storage, __value ? ~0 : 0); } # 582 "/usr/include/c++/4.8/bits/stl_bvector.h" 3 vector(const vector& __x) : _Base(__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(initializer_list __l, const allocator_type& __a = allocator_type()) : _Base(__a) { _M_initialize_range(__l.begin(), __l.end(), random_access_iterator_tag()); } template> vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Base(__a) { _M_initialize_dispatch(__first, __last, __false_type()); } # 620 "/usr/include/c++/4.8/bits/stl_bvector.h" 3 ~vector() noexcept { } vector& operator=(const vector& __x) { if (&__x == this) return *this; 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) { this->clear(); this->swap(__x); return *this; } vector& operator=(initializer_list __l) { this->assign (__l.begin(), __l.end()); return *this; } void assign(size_type __n, const bool& __x) { _M_fill_assign(__n, __x); } template> void assign(_InputIterator __first, _InputIterator __last) { _M_assign_dispatch(__first, __last, __false_type()); } # 680 "/usr/include/c++/4.8/bits/stl_bvector.h" 3 void assign(initializer_list __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::__max - int(_S_word_bit) + 1; const size_type __asize = _M_get_Bit_allocator().max_size(); 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_of_storage, 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(("vector::_M_range_check")); } 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_of_storage) *this->_M_impl._M_finish++ = __x; else _M_insert_aux(end(), __x); } void swap(vector& __x) { 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); std::__alloc_swap:: _S_do_it(_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(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_of_storage && __position == end()) *this->_M_impl._M_finish++ = __x; else _M_insert_aux(__position, __x); return begin() + __n; } template> void insert(iterator __position, _InputIterator __first, _InputIterator __last) { _M_insert_dispatch(__position, __first, __last, __false_type()); } # 886 "/usr/include/c++/4.8/bits/stl_bvector.h" 3 void insert(iterator __position, size_type __n, const bool& __x) { _M_fill_insert(__position, __n, __x); } void insert(iterator __p, initializer_list __l) { this->insert(__p, __l.begin(), __l.end()); } void pop_back() { --this->_M_impl._M_finish; } iterator erase(iterator __position) { if (__position + 1 != end()) std::copy(__position + 1, end(), __position); --this->_M_impl._M_finish; return __position; } iterator erase(iterator __first, iterator __last) { if (__first != __last) _M_erase_at_end(std::copy(__last, end(), __first)); return __first; } 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 { for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != this->_M_impl._M_end_of_storage; ++__p) *__p = ~*__p; } void clear() noexcept { _M_erase_at_end(begin()); } 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_type* __q = this->_M_allocate(__n); this->_M_impl._M_end_of_storage = __q + _S_nword(__n); this->_M_impl._M_start = iterator(__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 void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) { _M_initialize(static_cast(__n)); std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, __x ? ~0 : 0); } template void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, __false_type) { _M_initialize_range(__first, __last, std::__iterator_category(__first)); } template void _M_initialize_range(_InputIterator __first, _InputIterator __last, std::input_iterator_tag) { for (; __first != __last; ++__first) push_back(*__first); } template void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, std::forward_iterator_tag) { const size_type __n = std::distance(__first, __last); _M_initialize(__n); std::copy(__first, __last, this->_M_impl._M_start); } template void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) { _M_fill_assign(__n, __val); } template void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, __false_type) { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } void _M_fill_assign(size_t __n, bool __x) { if (__n > size()) { std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, __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_of_storage, __x ? ~0 : 0); } } template void _M_assign_aux(_InputIterator __first, _InputIterator __last, std::input_iterator_tag) { iterator __cur = begin(); for (; __first != __last && __cur != end(); ++__cur, ++__first) *__cur = *__first; if (__first == __last) _M_erase_at_end(__cur); else insert(end(), __first, __last); } template void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, std::forward_iterator_tag) { const size_type __len = std::distance(__first, __last); if (__len < size()) _M_erase_at_end(std::copy(__first, __last, begin())); else { _ForwardIterator __mid = __first; std::advance(__mid, size()); std::copy(__first, __mid, begin()); insert(end(), __mid, __last); } } template void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, __true_type) { _M_fill_insert(__pos, __n, __x); } template void _M_insert_dispatch(iterator __pos, _InputIterator __first, _InputIterator __last, __false_type) { _M_insert_range(__pos, __first, __last, std::__iterator_category(__first)); } void _M_fill_insert(iterator __position, size_type __n, bool __x); template void _M_insert_range(iterator __pos, _InputIterator __first, _InputIterator __last, std::input_iterator_tag) { for (; __first != __last; ++__first) { __pos = insert(__pos, *__first); ++__pos; } } template void _M_insert_range(iterator __position, _ForwardIterator __first, _ForwardIterator __last, std::forward_iterator_tag); void _M_insert_aux(iterator __position, bool __x); size_type _M_check_len(size_type __n, const char* __s) const { if (max_size() - size() < __n) __throw_length_error((__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; } }; } namespace std __attribute__ ((__visibility__ ("default"))) { template struct hash> : public __hash_base> { size_t operator()(const std::vector&) const noexcept; }; } # 66 "/usr/include/c++/4.8/vector" 2 3 # 1 "/usr/include/c++/4.8/bits/vector.tcc" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 template 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 vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: insert(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 { if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) { _Tp __x_copy = __x; _M_insert_aux(__position, std::move(__x_copy)); } else _M_insert_aux(__position, __x); } return iterator(this->_M_impl._M_start + __n); } template typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: 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 vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: 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 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 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.swap(*this); } else if (__n > size()) { std::fill(begin(), end(), __val); std::__uninitialized_fill_n_a(this->_M_impl._M_finish, __n - size(), __val, _M_get_Tp_allocator()); this->_M_impl._M_finish += __n - size(); } else _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); } template template 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 template 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 template typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: emplace(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(__position, std::forward<_Args>(__args)...); return iterator(this->_M_impl._M_start + __n); } template template void vector<_Tp, _Alloc>:: _M_insert_aux(iterator __position, _Args&&... __args) # 321 "/usr/include/c++/4.8/bits/vector.tcc" 3 { 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); if (true) { _Alloc_traits::construct(this->_M_impl, __new_start + __elems_before, std::forward<_Args>(__args)...); __new_finish = 0; __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()); } if (false) { 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); ; } 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 template 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); if (true) { _Alloc_traits::construct(this->_M_impl, __new_start + size(), std::forward<_Args>(__args)...); __new_finish = 0; __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; } if (false) { 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); ; } 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 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 { std::__uninitialized_fill_n_a(this->_M_impl._M_finish, __n - __elems_after, __x_copy, _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::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); if (true) { std::__uninitialized_fill_n_a(__new_start + __elems_before, __n, __x, _M_get_Tp_allocator()); __new_finish = 0; __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()); } if (false) { 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); ; } 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 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) { std::__uninitialized_default_n_a(this->_M_impl._M_finish, __n, _M_get_Tp_allocator()); this->_M_impl._M_finish += __n; } else { const size_type __len = _M_check_len(__n, "vector::_M_default_append"); const size_type __old_size = this->size(); pointer __new_start(this->_M_allocate(__len)); pointer __new_finish(__new_start); if (true) { __new_finish = std::__uninitialized_move_if_noexcept_a (this->_M_impl._M_start, this->_M_impl._M_finish, __new_start, _M_get_Tp_allocator()); std::__uninitialized_default_n_a(__new_finish, __n, _M_get_Tp_allocator()); __new_finish += __n; } if (false) { std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); _M_deallocate(__new_start, __len); ; } 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 bool vector<_Tp, _Alloc>:: _M_shrink_to_fit() { if (capacity() == size()) return false; return std::__shrink_to_fit_aux::_S_do_it(*this); } template template 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 template 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); if (true) { __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()); } if (false) { std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); _M_deallocate(__new_start, __len); ; } 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 void vector:: _M_reallocate(size_type __n) { _Bit_type* __q = this->_M_allocate(__n); this->_M_impl._M_finish = _M_copy_aligned(begin(), end(), iterator(__q, 0)); this->_M_deallocate(); this->_M_impl._M_start = iterator(__q, 0); this->_M_impl._M_end_of_storage = __q + _S_nword(__n); } template void vector:: _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::_M_fill_insert"); _Bit_type * __q = this->_M_allocate(__len); iterator __i = _M_copy_aligned(begin(), __position, iterator(__q, 0)); 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 = iterator(__q, 0); } } template template void vector:: _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::_M_insert_range"); _Bit_type * __q = this->_M_allocate(__len); iterator __i = _M_copy_aligned(begin(), __position, iterator(__q, 0)); __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 = iterator(__q, 0); } } } template void vector:: _M_insert_aux(iterator __position, bool __x) { if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage) { 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::_M_insert_aux"); _Bit_type * __q = this->_M_allocate(__len); iterator __i = _M_copy_aligned(begin(), __position, iterator(__q, 0)); *__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 = iterator(__q, 0); } } template bool vector:: _M_shrink_to_fit() { if (capacity() - size() < int(_S_word_bit)) return false; if (true) { _M_reallocate(size()); return true; } if (false) { return false; } } } namespace std __attribute__ ((__visibility__ ("default"))) { template size_t hash>:: operator()(const std::vector& __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 "/usr/include/c++/4.8/vector" 2 3 # 35 "/usr/include/c++/4.8/bits/random.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template _RealType generate_canonical(_UniformRandomNumberGenerator& __g); namespace __detail { template (std::numeric_limits<_UIntType>::digits)> struct _Shift { static const _UIntType __value = 0; }; template struct _Shift<_UIntType, __w, true> { static const _UIntType __value = _UIntType(1) << __w; }; template struct _Select_uint_least_t { static_assert(__which < 0, "sorry, would be too much trouble for a slow result"); }; template struct _Select_uint_least_t<__s, 4> { typedef unsigned int type; }; template struct _Select_uint_least_t<__s, 3> { typedef unsigned long type; }; template struct _Select_uint_least_t<__s, 2> { typedef unsigned long long type; }; template struct _Select_uint_least_t<__s, 1> { typedef unsigned __int128 type; }; template= __m - 1), bool __schrage_ok = __m % __a < __m / __a> struct _Mod { typedef typename _Select_uint_least_t::type _Tp2; static _Tp __calc(_Tp __x) { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } }; template struct _Mod<_Tp, __m, __a, __c, false, true> { static _Tp __calc(_Tp __x); }; template struct _Mod<_Tp, __m, __a, __c, true, __s> { static _Tp __calc(_Tp __x) { _Tp __res = __a * __x + __c; if (__m) __res %= __m; return __res; } }; template inline _Tp __mod(_Tp __x) { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } template inline bool _Power_of_2(_Tp __x) { return ((__x - 1) & __x) == 0; }; template struct _Adaptor { 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; }; } template 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; explicit linear_congruential_engine(result_type __s = default_seed) { seed(__s); } template::value> ::type> explicit linear_congruential_engine(_Sseq& __q) { seed(__q); } void seed(result_type __s = default_seed); template typename std::enable_if::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; } friend bool operator==(const linear_congruential_engine& __lhs, const linear_congruential_engine& __rhs) { return __lhs._M_x == __rhs._M_x; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::linear_congruential_engine<_UIntType1, __a1, __c1, __m1>& __lcr); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::linear_congruential_engine<_UIntType1, __a1, __c1, __m1>& __lcr); private: _UIntType _M_x; }; template inline bool operator!=(const std::linear_congruential_engine<_UIntType, __a, __c, __m>& __lhs, const std::linear_congruential_engine<_UIntType, __a, __c, __m>& __rhs) { return !(__lhs == __rhs); } template 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::value> ::type> explicit mersenne_twister_engine(_Sseq& __q) { seed(__q); } void seed(result_type __sd = default_seed); template typename std::enable_if::value>::type seed(_Sseq& __q); 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()(); 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); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, __l1, __f1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, __l1, __f1>& __x); private: void _M_gen_rand(); _UIntType _M_x[state_size]; size_t _M_p; }; template inline bool operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, const std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) { return !(__lhs == __rhs); } template 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::value> ::type> explicit subtract_with_carry_engine(_Sseq& __q) { seed(__q); } void seed(result_type __sd = default_seed); template typename std::enable_if::value>::type seed(_Sseq& __q); static constexpr result_type min() { return 0; } static constexpr result_type max() { return __detail::_Shift<_UIntType, __w>::__value - 1; } void discard(unsigned long long __z) { for (; __z != 0ULL; --__z) (*this)(); } result_type operator()(); 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); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>&, const std::subtract_with_carry_engine<_UIntType1, __w1, __s1, __r1>&); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>&, std::subtract_with_carry_engine<_UIntType1, __w1, __s1, __r1>&); private: _UIntType _M_x[long_lag]; _UIntType _M_carry; size_t _M_p; }; template inline bool operator!=(const std::subtract_with_carry_engine<_UIntType, __w, __s, __r>& __lhs, const std::subtract_with_carry_engine<_UIntType, __w, __s, __r>& __rhs) { return !(__lhs == __rhs); } template 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::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 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()(); 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; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::discard_block_engine<_RandomNumberEngine1, __p1, __r1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::discard_block_engine<_RandomNumberEngine1, __p1, __r1>& __x); private: _RandomNumberEngine _M_b; size_t _M_n; }; template inline bool operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, __r>& __lhs, const std::discard_block_engine<_RandomNumberEngine, __p, __r>& __rhs) { return !(__lhs == __rhs); } template 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::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 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()(); friend bool operator==(const independent_bits_engine& __lhs, const independent_bits_engine& __rhs) { return __lhs._M_b == __rhs._M_b; } template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>& __x) { __is >> __x._M_b; return __is; } private: _RandomNumberEngine _M_b; }; template inline bool operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>& __lhs, const std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>& __rhs) { return !(__lhs == __rhs); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::independent_bits_engine<_RandomNumberEngine, __w, _UIntType>& __x) { __os << __x.base(); return __os; } template 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::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 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()(); 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); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); private: void _M_initialize() { for (size_t __i = 0; __i < __k; ++__i) _M_v[__i] = _M_b(); _M_y = _M_b(); } _RandomNumberEngine _M_b; result_type _M_v[__k]; result_type _M_y; }; template 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 minstd_rand0; typedef linear_congruential_engine minstd_rand; 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 ranlux24_base; typedef subtract_with_carry_engine ranlux48_base; typedef discard_block_engine ranlux24; typedef discard_block_engine ranlux48; typedef shuffle_order_engine knuth_b; typedef minstd_rand0 default_random_engine; 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 "/usr/include/c++/4.8/bits/random.h" 3 static constexpr result_type min() { return std::numeric_limits::min(); } static constexpr result_type max() { return std::numeric_limits::max(); } double entropy() const noexcept { return 0.0; } result_type operator()() { 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 { FILE* _M_file; mt19937 _M_mt; }; }; template 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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const uniform_int_distribution& __d1, const uniform_int_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::uniform_int_distribution<_IntType>& __d1, const std::uniform_int_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>&, const std::uniform_int_distribution<_IntType>&); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>&, std::uniform_int_distribution<_IntType>&); template 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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); return (__aurng() * (__p.b() - __p.a())) + __p.a(); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const uniform_real_distribution& __d1, const uniform_real_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::uniform_real_distribution<_IntType>& __d1, const std::uniform_real_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>&, const std::uniform_real_distribution<_RealType>&); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>&, std::uniform_real_distribution<_RealType>&); template 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::lowest(); } result_type max() const { return std::numeric_limits::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template friend bool operator==(const std::normal_distribution<_RealType1>& __d1, const std::normal_distribution<_RealType1>& __d2); template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::normal_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::normal_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; result_type _M_saved; bool _M_saved_available; }; template inline bool operator!=(const std::normal_distribution<_RealType>& __d1, const std::normal_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const lognormal_distribution& __d1, const lognormal_distribution& __d2) { return (__d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::lognormal_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::lognormal_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::normal_distribution _M_nd; }; template inline bool operator!=(const std::lognormal_distribution<_RealType>& __d1, const std::lognormal_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const gamma_distribution& __d1, const gamma_distribution& __d2) { return (__d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::gamma_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::gamma_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::normal_distribution _M_nd; }; template inline bool operator!=(const std::gamma_distribution<_RealType>& __d1, const std::gamma_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return 2 * _M_gd(__urng); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { typedef typename std::gamma_distribution::param_type param_type; return 2 * _M_gd(__urng, param_type(__p.n() / 2)); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { typename std::gamma_distribution::param_type __p2(__p.n() / 2); this->__generate_impl(__f, __t, __urng, __p2); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { typename std::gamma_distribution::param_type __p2(__p.n() / 2); this->__generate_impl(__f, __t, __urng, __p2); } 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; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::chi_squared_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::chi_squared_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng); template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const typename std::gamma_distribution::param_type& __p); param_type _M_param; std::gamma_distribution _M_gd; }; template inline bool operator!=(const std::chi_squared_distribution<_RealType>& __d1, const std::chi_squared_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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::lowest(); } result_type max() const { return std::numeric_limits::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const cauchy_distribution& __d1, const cauchy_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::cauchy_distribution<_RealType>& __d1, const std::cauchy_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::cauchy_distribution<_RealType>& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::cauchy_distribution<_RealType>& __x); template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { typedef typename std::gamma_distribution::param_type param_type; return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } 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); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::fisher_f_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::fisher_f_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng); template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::gamma_distribution _M_gd_x, _M_gd_y; }; template inline bool operator!=(const std::fisher_f_distribution<_RealType>& __d1, const std::fisher_f_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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::lowest(); } result_type max() const { return std::numeric_limits::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { typedef typename std::gamma_distribution::param_type param_type; const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); return _M_nd(__urng) * std::sqrt(__p.n() / __g); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } 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); } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::student_t_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::student_t_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng); template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::normal_distribution _M_nd; std::gamma_distribution _M_gd; }; template inline bool operator!=(const std::student_t_distribution<_RealType>& __d1, const std::student_t_distribution<_RealType>& __d2) { return !(__d1 == __d2); } 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::min(); } result_type max() const { return std::numeric_limits::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); if ((__aurng() - __aurng.min()) < __p.p() * (__aurng.max() - __aurng.min())) return true; return false; } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const bernoulli_distribution& __d1, const bernoulli_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; inline bool operator!=(const std::bernoulli_distribution& __d1, const std::bernoulli_distribution& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::bernoulli_distribution& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::bernoulli_distribution& __x) { double __p; __is >> __p; __x.param(bernoulli_distribution::param_type(__p)); return __is; } template 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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const binomial_distribution& __d1, const binomial_distribution& __d2) { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::binomial_distribution<_IntType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::binomial_distribution<_IntType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); template result_type _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t, double __q); param_type _M_param; std::normal_distribution _M_nd; }; template inline bool operator!=(const std::binomial_distribution<_IntType>& __d1, const std::binomial_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const geometric_distribution& __d1, const geometric_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::geometric_distribution<_IntType>& __d1, const std::geometric_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::geometric_distribution<_IntType>& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::geometric_distribution<_IntType>& __x); template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng); template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng) { this->__generate_impl(__f, __t, __urng); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } 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; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::negative_binomial_distribution<_IntType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::negative_binomial_distribution<_IntType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng); template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::gamma_distribution _M_gd; }; template inline bool operator!=(const std::negative_binomial_distribution<_IntType>& __d1, const std::negative_binomial_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const poisson_distribution& __d1, const poisson_distribution& __d2) { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::poisson_distribution<_IntType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::poisson_distribution<_IntType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; std::normal_distribution _M_nd; }; template inline bool operator!=(const std::poisson_distribution<_IntType>& __d1, const std::poisson_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); return -std::log(result_type(1) - __aurng()) / __p.lambda(); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const exponential_distribution& __d1, const exponential_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::exponential_distribution<_RealType>& __d1, const std::exponential_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::exponential_distribution<_RealType>& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::exponential_distribution<_RealType>& __x); template 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::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const weibull_distribution& __d1, const weibull_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::weibull_distribution<_RealType>& __d1, const std::weibull_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::weibull_distribution<_RealType>& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::weibull_distribution<_RealType>& __x); template 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::lowest(); } result_type max() const { return std::numeric_limits::max(); } template result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const extreme_value_distribution& __d1, const extreme_value_distribution& __d2) { return __d1._M_param == __d2._M_param; } private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::extreme_value_distribution<_RealType>& __d1, const std::extreme_value_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::extreme_value_distribution<_RealType>& __x); template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::extreme_value_distribution<_RealType>& __x); template 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 param_type(_InputIterator __wbegin, _InputIterator __wend) : _M_prob(__wbegin, __wend), _M_cp() { _M_initialize(); } param_type(initializer_list __wil) : _M_prob(__wil.begin(), __wil.end()), _M_cp() { _M_initialize(); } template param_type(size_t __nw, double __xmin, double __xmax, _Func __fw); param_type(const param_type&) = default; param_type& operator=(const param_type&) = default; std::vector probabilities() const { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } friend bool operator==(const param_type& __p1, const param_type& __p2) { return __p1._M_prob == __p2._M_prob; } private: void _M_initialize(); std::vector _M_prob; std::vector _M_cp; }; discrete_distribution() : _M_param() { } template discrete_distribution(_InputIterator __wbegin, _InputIterator __wend) : _M_param(__wbegin, __wend) { } discrete_distribution(initializer_list __wl) : _M_param(__wl) { } template discrete_distribution(size_t __nw, double __xmin, double __xmax, _Func __fw) : _M_param(__nw, __xmin, __xmax, __fw) { } explicit discrete_distribution(const param_type& __p) : _M_param(__p) { } void reset() { } std::vector probabilities() const { return _M_param._M_prob.empty() ? std::vector(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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const discrete_distribution& __d1, const discrete_distribution& __d2) { return __d1._M_param == __d2._M_param; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::discrete_distribution<_IntType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::discrete_distribution<_IntType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::discrete_distribution<_IntType>& __d1, const std::discrete_distribution<_IntType>& __d2) { return !(__d1 == __d2); } template 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 param_type(_InputIteratorB __bfirst, _InputIteratorB __bend, _InputIteratorW __wbegin); template param_type(initializer_list<_RealType> __bi, _Func __fw); template param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw); param_type(const param_type&) = default; param_type& operator=(const param_type&) = default; std::vector<_RealType> intervals() const { if (_M_int.empty()) { std::vector<_RealType> __tmp(2); __tmp[1] = _RealType(1); return __tmp; } else return _M_int; } std::vector densities() const { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } friend bool operator==(const param_type& __p1, const param_type& __p2) { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } private: void _M_initialize(); std::vector<_RealType> _M_int; std::vector _M_den; std::vector _M_cp; }; explicit piecewise_constant_distribution() : _M_param() { } template piecewise_constant_distribution(_InputIteratorB __bfirst, _InputIteratorB __bend, _InputIteratorW __wbegin) : _M_param(__bfirst, __bend, __wbegin) { } template piecewise_constant_distribution(initializer_list<_RealType> __bl, _Func __fw) : _M_param(__bl, __fw) { } template piecewise_constant_distribution(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) : _M_param(__nw, __xmin, __xmax, __fw) { } explicit piecewise_constant_distribution(const param_type& __p) : _M_param(__p) { } 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 densities() const { return _M_param._M_den.empty() ? std::vector(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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const piecewise_constant_distribution& __d1, const piecewise_constant_distribution& __d2) { return __d1._M_param == __d2._M_param; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::piecewise_constant_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::piecewise_constant_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, const std::piecewise_constant_distribution<_RealType>& __d2) { return !(__d1 == __d2); } template 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 param_type(_InputIteratorB __bfirst, _InputIteratorB __bend, _InputIteratorW __wbegin); template param_type(initializer_list<_RealType> __bl, _Func __fw); template param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw); param_type(const param_type&) = default; param_type& operator=(const param_type&) = default; std::vector<_RealType> intervals() const { if (_M_int.empty()) { std::vector<_RealType> __tmp(2); __tmp[1] = _RealType(1); return __tmp; } else return _M_int; } std::vector densities() const { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } friend bool operator==(const param_type& __p1, const param_type& __p2) { return (__p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den); } private: void _M_initialize(); std::vector<_RealType> _M_int; std::vector _M_den; std::vector _M_cp; std::vector _M_m; }; explicit piecewise_linear_distribution() : _M_param() { } template piecewise_linear_distribution(_InputIteratorB __bfirst, _InputIteratorB __bend, _InputIteratorW __wbegin) : _M_param(__bfirst, __bend, __wbegin) { } template piecewise_linear_distribution(initializer_list<_RealType> __bl, _Func __fw) : _M_param(__bl, __fw) { } template piecewise_linear_distribution(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) : _M_param(__nw, __xmin, __xmax, __fw) { } explicit piecewise_linear_distribution(const param_type& __p) : _M_param(__p) { } 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 densities() const { return _M_param._M_den.empty() ? std::vector(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 result_type operator()(_UniformRandomNumberGenerator& __urng) { return this->operator()(__urng, _M_param); } template result_type operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p); template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { this->__generate(__f, __t, __urng, _M_param); } template void __generate(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } template void __generate(result_type* __f, result_type* __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { this->__generate_impl(__f, __t, __urng, __p); } friend bool operator==(const piecewise_linear_distribution& __d1, const piecewise_linear_distribution& __d2) { return __d1._M_param == __d2._M_param; } template friend std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const std::piecewise_linear_distribution<_RealType1>& __x); template friend std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, std::piecewise_linear_distribution<_RealType1>& __x); private: template void __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p); param_type _M_param; }; template inline bool operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, const std::piecewise_linear_distribution<_RealType>& __d2) { return !(__d1 == __d2); } class seed_seq { public: typedef uint_least32_t result_type; seed_seq() : _M_v() { } template seed_seq(std::initializer_list<_IntType> il); template seed_seq(_InputIterator __begin, _InputIterator __end); template void generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); size_t size() const { return _M_v.size(); } template void param(OutputIterator __dest) const { std::copy(_M_v.begin(), _M_v.end(), __dest); } private: std::vector _M_v; }; } # 51 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/opt_random.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/x86intrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/ia32intrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/wmmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/nmmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/smmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/tmmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/pmmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/emmintrin.h" 1 3 # 33 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/emmintrin.h" 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 1 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/mmintrin.h" 1 3 # 31 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/mmintrin.h" 3 # 39 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/mmintrin.h" 3 # 67 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/mmintrin.h" 3 typedef union __declspec(align(8)) __declspec(intrin_type) __m64 { unsigned __int64 m64_u64; float m64_f32[2]; __int8 m64_i8[8]; __int16 m64_i16[4]; __int32 m64_i32[2]; __int64 m64_i64; unsigned __int8 m64_u8[8]; unsigned __int16 m64_u16[4]; unsigned __int32 m64_u32[2]; __int64 __m; } __m64; extern "C" { extern void _m_empty(void); extern __m64 _m_from_int(int); extern int _m_to_int(__m64); extern __m64 _m_packsswb(__m64, __m64); extern __m64 _m_packssdw(__m64, __m64); extern __m64 _m_packuswb(__m64, __m64); extern __m64 _m_punpckhbw(__m64, __m64); extern __m64 _m_punpckhwd(__m64, __m64); extern __m64 _m_punpckhdq(__m64, __m64); extern __m64 _m_punpcklbw(__m64, __m64); extern __m64 _m_punpcklwd(__m64, __m64); extern __m64 _m_punpckldq(__m64, __m64); extern __m64 _m_paddb(__m64, __m64); extern __m64 _m_paddw(__m64, __m64); extern __m64 _m_paddd(__m64, __m64); extern __m64 _m_paddsb(__m64, __m64); extern __m64 _m_paddsw(__m64, __m64); extern __m64 _m_paddusb(__m64, __m64); extern __m64 _m_paddusw(__m64, __m64); extern __m64 _m_psubb(__m64, __m64); extern __m64 _m_psubw(__m64, __m64); extern __m64 _m_psubd(__m64, __m64); extern __m64 _m_psubsb(__m64, __m64); extern __m64 _m_psubsw(__m64, __m64); extern __m64 _m_psubusb(__m64, __m64); extern __m64 _m_psubusw(__m64, __m64); extern __m64 _m_pmaddwd(__m64, __m64); extern __m64 _m_pmulhw(__m64, __m64); extern __m64 _m_pmullw(__m64, __m64); extern __m64 _m_psllw(__m64, __m64); extern __m64 _m_psllwi(__m64, int); extern __m64 _m_pslld(__m64, __m64); extern __m64 _m_pslldi(__m64, int); extern __m64 _m_psllq(__m64, __m64); extern __m64 _m_psllqi(__m64, int); extern __m64 _m_psraw(__m64, __m64); extern __m64 _m_psrawi(__m64, int); extern __m64 _m_psrad(__m64, __m64); extern __m64 _m_psradi(__m64, int); extern __m64 _m_psrlw(__m64, __m64); extern __m64 _m_psrlwi(__m64, int); extern __m64 _m_psrld(__m64, __m64); extern __m64 _m_psrldi(__m64, int); extern __m64 _m_psrlq(__m64, __m64); extern __m64 _m_psrlqi(__m64, int); extern __m64 _m_pand(__m64, __m64); extern __m64 _m_pandn(__m64, __m64); extern __m64 _m_por(__m64, __m64); extern __m64 _m_pxor(__m64, __m64); extern __m64 _m_pcmpeqb(__m64, __m64); extern __m64 _m_pcmpeqw(__m64, __m64); extern __m64 _m_pcmpeqd(__m64, __m64); extern __m64 _m_pcmpgtb(__m64, __m64); extern __m64 _m_pcmpgtw(__m64, __m64); extern __m64 _m_pcmpgtd(__m64, __m64); extern __m64 _mm_setzero_si64(); extern __m64 _mm_set_pi32(int, int); extern __m64 _mm_set_pi16(short, short, short, short); extern __m64 _mm_set_pi8(char, char, char, char, char, char, char, char); extern __m64 _mm_set1_pi32(int); extern __m64 _mm_set1_pi16(short); extern __m64 _mm_set1_pi8(char); extern __m64 _mm_setr_pi32(int, int); extern __m64 _mm_setr_pi16(short, short, short, short); extern __m64 _mm_setr_pi8(char, char, char, char, char, char, char, char); extern __m64 _m_from_int64(__int64); extern __int64 _m_to_int64(__m64); # 235 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/mmintrin.h" 3 }; # 25 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 2 3 # 32 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 61 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 typedef struct __declspec(align(16)) __declspec(intrin_type) __m128 { float m128_f32[4]; } __m128; extern "C" { # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 82 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 2 3 extern void* _mm_malloc(size_t, size_t); extern void _mm_free(void *); # 123 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 134 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 143 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 151 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 extern __m128 _mm_add_ss(__m128, __m128); extern __m128 _mm_add_ps(__m128, __m128); extern __m128 _mm_sub_ss(__m128, __m128); extern __m128 _mm_sub_ps(__m128, __m128); extern __m128 _mm_mul_ss(__m128, __m128); extern __m128 _mm_mul_ps(__m128, __m128); extern __m128 _mm_div_ss(__m128, __m128); extern __m128 _mm_div_ps(__m128, __m128); extern __m128 _mm_sqrt_ss(__m128); extern __m128 _mm_sqrt_ps(__m128); extern __m128 _mm_rcp_ss(__m128); extern __m128 _mm_rcp_ps(__m128); extern __m128 _mm_rsqrt_ss(__m128); extern __m128 _mm_rsqrt_ps(__m128); extern __m128 _mm_min_ss(__m128, __m128); extern __m128 _mm_min_ps(__m128, __m128); extern __m128 _mm_max_ss(__m128, __m128); extern __m128 _mm_max_ps(__m128, __m128); extern __m128 _mm_and_ps(__m128, __m128); extern __m128 _mm_andnot_ps(__m128, __m128); extern __m128 _mm_or_ps(__m128, __m128); extern __m128 _mm_xor_ps(__m128, __m128); extern __m128 _mm_cmpeq_ss(__m128, __m128); extern __m128 _mm_cmpeq_ps(__m128, __m128); extern __m128 _mm_cmplt_ss(__m128, __m128); extern __m128 _mm_cmplt_ps(__m128, __m128); extern __m128 _mm_cmple_ss(__m128, __m128); extern __m128 _mm_cmple_ps(__m128, __m128); extern __m128 _mm_cmpgt_ss(__m128, __m128); extern __m128 _mm_cmpgt_ps(__m128, __m128); extern __m128 _mm_cmpge_ss(__m128, __m128); extern __m128 _mm_cmpge_ps(__m128, __m128); extern __m128 _mm_cmpneq_ss(__m128, __m128); extern __m128 _mm_cmpneq_ps(__m128, __m128); extern __m128 _mm_cmpnlt_ss(__m128, __m128); extern __m128 _mm_cmpnlt_ps(__m128, __m128); extern __m128 _mm_cmpnle_ss(__m128, __m128); extern __m128 _mm_cmpnle_ps(__m128, __m128); extern __m128 _mm_cmpngt_ss(__m128, __m128); extern __m128 _mm_cmpngt_ps(__m128, __m128); extern __m128 _mm_cmpnge_ss(__m128, __m128); extern __m128 _mm_cmpnge_ps(__m128, __m128); extern __m128 _mm_cmpord_ss(__m128, __m128); extern __m128 _mm_cmpord_ps(__m128, __m128); extern __m128 _mm_cmpunord_ss(__m128, __m128); extern __m128 _mm_cmpunord_ps(__m128, __m128); extern int _mm_comieq_ss(__m128, __m128); extern int _mm_comilt_ss(__m128, __m128); extern int _mm_comile_ss(__m128, __m128); extern int _mm_comigt_ss(__m128, __m128); extern int _mm_comige_ss(__m128, __m128); extern int _mm_comineq_ss(__m128, __m128); extern int _mm_ucomieq_ss(__m128, __m128); extern int _mm_ucomilt_ss(__m128, __m128); extern int _mm_ucomile_ss(__m128, __m128); extern int _mm_ucomigt_ss(__m128, __m128); extern int _mm_ucomige_ss(__m128, __m128); extern int _mm_ucomineq_ss(__m128, __m128); extern int _mm_cvt_ss2si(__m128); extern __m64 _mm_cvt_ps2pi(__m128); extern int _mm_cvtt_ss2si(__m128); extern __m64 _mm_cvtt_ps2pi(__m128); extern __m128 _mm_cvt_si2ss(__m128, int); extern __m128 _mm_cvt_pi2ps(__m128, __m64); extern __m128 _mm_shuffle_ps(__m128, __m128, unsigned int); extern __m128 _mm_unpackhi_ps(__m128, __m128); extern __m128 _mm_unpacklo_ps(__m128, __m128); extern __m128 _mm_loadh_pi(__m128, __m64 const*); extern __m128 _mm_movehl_ps(__m128, __m128); extern __m128 _mm_movelh_ps(__m128, __m128); extern void _mm_storeh_pi(__m64 *, __m128); extern __m128 _mm_loadl_pi(__m128, __m64 const*); extern void _mm_storel_pi(__m64 *, __m128); extern int _mm_movemask_ps(__m128); extern int _m_pextrw(__m64, int); extern __m64 _m_pinsrw(__m64, int, int); extern __m64 _m_pmaxsw(__m64, __m64); extern __m64 _m_pmaxub(__m64, __m64); extern __m64 _m_pminsw(__m64, __m64); extern __m64 _m_pminub(__m64, __m64); extern int _m_pmovmskb(__m64); extern __m64 _m_pmulhuw(__m64, __m64); extern __m64 _m_pshufw(__m64, int); extern void _m_maskmovq(__m64, __m64, char *); extern __m64 _m_pavgb(__m64, __m64); extern __m64 _m_pavgw(__m64, __m64); extern __m64 _m_psadbw(__m64, __m64); extern __m128 _mm_set_ss(float); extern __m128 _mm_set_ps1(float); extern __m128 _mm_set_ps(float, float, float, float); extern __m128 _mm_setr_ps(float, float, float, float); extern __m128 _mm_setzero_ps(void); extern __m128 _mm_load_ss(float const*); extern __m128 _mm_load_ps1(float const*); extern __m128 _mm_load_ps(float const*); extern __m128 _mm_loadr_ps(float const*); extern __m128 _mm_loadu_ps(float const*); extern void _mm_store_ss(float *, __m128); extern void _mm_store_ps1(float *, __m128); extern void _mm_store_ps(float *, __m128); extern void _mm_storer_ps(float *, __m128); extern void _mm_storeu_ps(float *, __m128); extern void _mm_prefetch(char const*, int); extern void _mm_stream_pi(__m64 *, __m64); extern void _mm_stream_ps(float *, __m128); extern __m128 _mm_move_ss(__m128, __m128); extern float _mm_cvtss_f32(__m128); extern void _mm_sfence(void); extern unsigned int _mm_getcsr(void); extern void _mm_setcsr(unsigned int); extern __int64 _mm_cvtss_si64(__m128); extern __int64 _mm_cvttss_si64(__m128); extern __m128 _mm_cvtsi64_ss(__m128, __int64); # 365 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 388 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 # 405 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 3 }; # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/emmintrin.h" 1 3 # 482 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/xmmintrin.h" 2 3 # 40 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/emmintrin.h" 2 3 typedef struct __declspec(align(16)) __declspec(intrin_type) __m128d { double m128d_f64[2]; } __m128d; typedef union __declspec(align(16)) __declspec(intrin_type) __m128i { __int64 m128i_gcc_compatibility[2]; __int8 m128i_i8[16]; __int16 m128i_i16[8]; __int32 m128i_i32[4]; __int64 m128i_i64[2]; unsigned __int8 m128i_u8[16]; unsigned __int16 m128i_u16[8]; unsigned __int32 m128i_u32[4]; unsigned __int64 m128i_u64[2]; char c[16]; } __m128i; extern "C" { extern __m128d _mm_add_sd(__m128d, __m128d); extern __m128d _mm_add_pd(__m128d, __m128d); extern __m128d _mm_sub_sd(__m128d, __m128d); extern __m128d _mm_sub_pd(__m128d, __m128d); extern __m128d _mm_mul_sd(__m128d, __m128d); extern __m128d _mm_mul_pd(__m128d, __m128d); extern __m128d _mm_sqrt_sd(__m128d, __m128d); extern __m128d _mm_sqrt_pd(__m128d); extern __m128d _mm_div_sd(__m128d, __m128d); extern __m128d _mm_div_pd(__m128d, __m128d); extern __m128d _mm_min_sd(__m128d, __m128d); extern __m128d _mm_min_pd(__m128d, __m128d); extern __m128d _mm_max_sd(__m128d, __m128d); extern __m128d _mm_max_pd(__m128d, __m128d); extern __m128d _mm_and_pd(__m128d, __m128d); extern __m128d _mm_andnot_pd(__m128d, __m128d); extern __m128d _mm_or_pd(__m128d, __m128d); extern __m128d _mm_xor_pd(__m128d, __m128d); extern __m128d _mm_cmpeq_sd(__m128d, __m128d); extern __m128d _mm_cmpeq_pd(__m128d, __m128d); extern __m128d _mm_cmplt_sd(__m128d, __m128d); extern __m128d _mm_cmplt_pd(__m128d, __m128d); extern __m128d _mm_cmple_sd(__m128d, __m128d); extern __m128d _mm_cmple_pd(__m128d, __m128d); extern __m128d _mm_cmpgt_sd(__m128d, __m128d); extern __m128d _mm_cmpgt_pd(__m128d, __m128d); extern __m128d _mm_cmpge_sd(__m128d, __m128d); extern __m128d _mm_cmpge_pd(__m128d, __m128d); extern __m128d _mm_cmpneq_sd(__m128d, __m128d); extern __m128d _mm_cmpneq_pd(__m128d, __m128d); extern __m128d _mm_cmpnlt_sd(__m128d, __m128d); extern __m128d _mm_cmpnlt_pd(__m128d, __m128d); extern __m128d _mm_cmpnle_sd(__m128d, __m128d); extern __m128d _mm_cmpnle_pd(__m128d, __m128d); extern __m128d _mm_cmpngt_sd(__m128d, __m128d); extern __m128d _mm_cmpngt_pd(__m128d, __m128d); extern __m128d _mm_cmpnge_sd(__m128d, __m128d); extern __m128d _mm_cmpnge_pd(__m128d, __m128d); extern __m128d _mm_cmpord_pd(__m128d, __m128d); extern __m128d _mm_cmpord_sd(__m128d, __m128d); extern __m128d _mm_cmpunord_pd(__m128d, __m128d); extern __m128d _mm_cmpunord_sd(__m128d, __m128d); extern int _mm_comieq_sd(__m128d, __m128d); extern int _mm_comilt_sd(__m128d, __m128d); extern int _mm_comile_sd(__m128d, __m128d); extern int _mm_comigt_sd(__m128d, __m128d); extern int _mm_comige_sd(__m128d, __m128d); extern int _mm_comineq_sd(__m128d, __m128d); extern int _mm_ucomieq_sd(__m128d, __m128d); extern int _mm_ucomilt_sd(__m128d, __m128d); extern int _mm_ucomile_sd(__m128d, __m128d); extern int _mm_ucomigt_sd(__m128d, __m128d); extern int _mm_ucomige_sd(__m128d, __m128d); extern int _mm_ucomineq_sd(__m128d, __m128d); extern __m128d _mm_cvtepi32_pd(__m128i); extern __m128i _mm_cvtpd_epi32(__m128d); extern __m128i _mm_cvttpd_epi32(__m128d); extern __m128 _mm_cvtepi32_ps(__m128i); extern __m128i _mm_cvtps_epi32(__m128); extern __m128i _mm_cvttps_epi32(__m128); extern __m128 _mm_cvtpd_ps(__m128d); extern __m128d _mm_cvtps_pd(__m128); extern __m128 _mm_cvtsd_ss(__m128, __m128d); extern double _mm_cvtsd_f64(__m128d); extern __m128d _mm_cvtss_sd(__m128d, __m128); extern int _mm_cvtsd_si32(__m128d); extern int _mm_cvttsd_si32(__m128d); extern __m128d _mm_cvtsi32_sd(__m128d, int); extern __m64 _mm_cvtpd_pi32(__m128d); extern __m64 _mm_cvttpd_pi32(__m128d); extern __m128d _mm_cvtpi32_pd(__m64); extern __m128d _mm_unpackhi_pd(__m128d, __m128d); extern __m128d _mm_unpacklo_pd(__m128d, __m128d); extern int _mm_movemask_pd(__m128d); extern __m128d _mm_shuffle_pd(__m128d, __m128d, int); extern __m128d _mm_load_pd(double const*); extern __m128d _mm_load1_pd(double const*); extern __m128d _mm_loadr_pd(double const*); extern __m128d _mm_loadu_pd(double const*); extern __m128d _mm_load_sd(double const*); extern __m128d _mm_loadh_pd(__m128d, double const*); extern __m128d _mm_loadl_pd(__m128d, double const*); extern __m128d _mm_set_sd(double); extern __m128d _mm_set1_pd(double); extern __m128d _mm_set_pd(double, double); extern __m128d _mm_setr_pd(double, double); extern __m128d _mm_setzero_pd(void); extern __m128d _mm_move_sd(__m128d, __m128d); extern void _mm_store_sd(double *, __m128d); extern void _mm_store1_pd(double *, __m128d); extern void _mm_store_pd(double *, __m128d); extern void _mm_storeu_pd(double *, __m128d); extern void _mm_storer_pd(double *, __m128d); extern void _mm_storeh_pd(double *, __m128d); extern void _mm_storel_pd(double *, __m128d); extern __m128i _mm_add_epi8(__m128i, __m128i); extern __m128i _mm_add_epi16(__m128i, __m128i); extern __m128i _mm_add_epi32(__m128i, __m128i); extern __m64 _mm_add_si64(__m64, __m64); extern __m128i _mm_add_epi64(__m128i, __m128i); extern __m128i _mm_adds_epi8(__m128i, __m128i); extern __m128i _mm_adds_epi16(__m128i, __m128i); extern __m128i _mm_adds_epu8(__m128i, __m128i); extern __m128i _mm_adds_epu16(__m128i, __m128i); extern __m128i _mm_avg_epu8(__m128i, __m128i); extern __m128i _mm_avg_epu16(__m128i, __m128i); extern __m128i _mm_madd_epi16(__m128i, __m128i); extern __m128i _mm_max_epi16(__m128i, __m128i); extern __m128i _mm_max_epu8(__m128i, __m128i); extern __m128i _mm_min_epi16(__m128i, __m128i); extern __m128i _mm_min_epu8(__m128i, __m128i); extern __m128i _mm_mulhi_epi16(__m128i, __m128i); extern __m128i _mm_mulhi_epu16(__m128i, __m128i); extern __m128i _mm_mullo_epi16(__m128i, __m128i); extern __m64 _mm_mul_su32(__m64, __m64); extern __m128i _mm_mul_epu32(__m128i, __m128i); extern __m128i _mm_sad_epu8(__m128i, __m128i); extern __m128i _mm_sub_epi8(__m128i, __m128i); extern __m128i _mm_sub_epi16(__m128i, __m128i); extern __m128i _mm_sub_epi32(__m128i, __m128i); extern __m64 _mm_sub_si64(__m64, __m64); extern __m128i _mm_sub_epi64(__m128i, __m128i); extern __m128i _mm_subs_epi8(__m128i, __m128i); extern __m128i _mm_subs_epi16(__m128i, __m128i); extern __m128i _mm_subs_epu8(__m128i, __m128i); extern __m128i _mm_subs_epu16(__m128i, __m128i); extern __m128i _mm_and_si128(__m128i, __m128i); extern __m128i _mm_andnot_si128(__m128i, __m128i); extern __m128i _mm_or_si128(__m128i, __m128i); extern __m128i _mm_xor_si128(__m128i, __m128i); extern __m128i _mm_bslli_si128(__m128i, int); extern __m128i _mm_slli_si128(__m128i, int); extern __m128i _mm_slli_epi16(__m128i, int); extern __m128i _mm_sll_epi16(__m128i, __m128i); extern __m128i _mm_slli_epi32(__m128i, int); extern __m128i _mm_sll_epi32(__m128i, __m128i); extern __m128i _mm_slli_epi64(__m128i, int); extern __m128i _mm_sll_epi64(__m128i, __m128i); extern __m128i _mm_srai_epi16(__m128i, int); extern __m128i _mm_sra_epi16(__m128i, __m128i); extern __m128i _mm_srai_epi32(__m128i, int); extern __m128i _mm_sra_epi32(__m128i, __m128i); extern __m128i _mm_bsrli_si128(__m128i, int); extern __m128i _mm_srli_si128(__m128i, int); extern __m128i _mm_srli_epi16(__m128i, int); extern __m128i _mm_srl_epi16(__m128i, __m128i); extern __m128i _mm_srli_epi32(__m128i, int); extern __m128i _mm_srl_epi32(__m128i, __m128i); extern __m128i _mm_srli_epi64(__m128i, int); extern __m128i _mm_srl_epi64(__m128i, __m128i); extern __m128i _mm_cmpeq_epi8(__m128i, __m128i); extern __m128i _mm_cmpeq_epi16(__m128i, __m128i); extern __m128i _mm_cmpeq_epi32(__m128i, __m128i); extern __m128i _mm_cmpgt_epi8(__m128i, __m128i); extern __m128i _mm_cmpgt_epi16(__m128i, __m128i); extern __m128i _mm_cmpgt_epi32(__m128i, __m128i); extern __m128i _mm_cmplt_epi8(__m128i, __m128i); extern __m128i _mm_cmplt_epi16(__m128i, __m128i); extern __m128i _mm_cmplt_epi32(__m128i, __m128i); extern __m128i _mm_cvtsi32_si128(int); extern int _mm_cvtsi128_si32(__m128i); extern __m128i _mm_packs_epi16(__m128i, __m128i); extern __m128i _mm_packs_epi32(__m128i, __m128i); extern __m128i _mm_packus_epi16(__m128i, __m128i); extern int _mm_extract_epi16(__m128i, int); extern __m128i _mm_insert_epi16(__m128i, int, int); extern int _mm_movemask_epi8(__m128i); extern __m128i _mm_shuffle_epi32(__m128i, int); extern __m128i _mm_shufflehi_epi16(__m128i, int); extern __m128i _mm_shufflelo_epi16(__m128i, int); extern __m128i _mm_unpackhi_epi8(__m128i, __m128i); extern __m128i _mm_unpackhi_epi16(__m128i, __m128i); extern __m128i _mm_unpackhi_epi32(__m128i, __m128i); extern __m128i _mm_unpackhi_epi64(__m128i, __m128i); extern __m128i _mm_unpacklo_epi8(__m128i, __m128i); extern __m128i _mm_unpacklo_epi16(__m128i, __m128i); extern __m128i _mm_unpacklo_epi32(__m128i, __m128i); extern __m128i _mm_unpacklo_epi64(__m128i, __m128i); extern __m128i _mm_move_epi64(__m128i); extern __m128i _mm_movpi64_epi64(__m64); extern __m64 _mm_movepi64_pi64(__m128i); extern __m128i _mm_load_si128(__m128i const*); extern __m128i _mm_loadu_si128(__m128i const*); extern __m128i _mm_loadl_epi64(__m128i const*); extern __m128i _mm_set_epi64(__m64, __m64); extern __m128i _mm_set_epi32(int, int, int, int); extern __m128i _mm_set_epi16(short, short, short, short, short, short, short, short); extern __m128i _mm_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); extern __m128i _mm_set1_epi64(__m64); extern __m128i _mm_set1_epi32(int); extern __m128i _mm_set1_epi16(short); extern __m128i _mm_set1_epi8(char); extern __m128i _mm_setr_epi64(__m64, __m64); extern __m128i _mm_setr_epi32(int, int, int, int); extern __m128i _mm_setr_epi16(short, short, short, short, short, short, short, short); extern __m128i _mm_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); extern __m128i _mm_setzero_si128(); extern void _mm_store_si128(__m128i *, __m128i); extern void _mm_storeu_si128(__m128i *, __m128i); extern void _mm_storel_epi64(__m128i *, __m128i); extern void _mm_maskmoveu_si128(__m128i, __m128i, char *); extern void _mm_stream_pd(double *, __m128d); extern void _mm_stream_si128(__m128i *, __m128i); extern void _mm_clflush(void const*); extern void _mm_lfence(void); extern void _mm_mfence(void); extern void _mm_stream_si32(int *, int); extern void _mm_pause(void); extern __m128 _mm_castpd_ps(__m128d); extern __m128i _mm_castpd_si128(__m128d); extern __m128d _mm_castps_pd(__m128); extern __m128i _mm_castps_si128(__m128); extern __m128 _mm_castsi128_ps(__m128i); extern __m128d _mm_castsi128_pd(__m128i); extern __m128i _mm_cvtsi64_si128(__int64); extern __int64 _mm_cvtsi128_si64(__m128i); extern __m128i _mm_set1_epi64x(__int64); extern __m128i _mm_set_epi64x(__int64, __int64); extern __int64 _mm_cvtsd_si64(__m128d); extern __int64 _mm_cvttsd_si64(__m128d); extern __m128d _mm_cvtsi64_sd(__m128d, __int64); extern void _mm_stream_si64(__int64 *, __int64); extern float _cvtsh_ss(unsigned short); extern unsigned short _cvtss_sh(float, int); extern __m128 _mm_cvtph_ps(__m128i); extern __m128i _mm_cvtps_ph(__m128, int); }; # 22 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/pmmintrin.h" 2 3 extern "C" { extern __m128 _mm_addsub_ps(__m128, __m128); extern __m128 _mm_hadd_ps(__m128, __m128); extern __m128 _mm_hsub_ps(__m128, __m128); extern __m128 _mm_movehdup_ps(__m128); extern __m128 _mm_moveldup_ps(__m128); extern __m128d _mm_addsub_pd(__m128d, __m128d); extern __m128d _mm_hadd_pd(__m128d, __m128d); extern __m128d _mm_hsub_pd(__m128d, __m128d); extern __m128d _mm_loaddup_pd(double const *); extern __m128d _mm_movedup_pd(__m128d); extern __m128i _mm_lddqu_si128(__m128i const *); extern void _mm_monitor(void const *, unsigned, unsigned); extern void _mm_mwait(unsigned, unsigned); }; # 15 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/tmmintrin.h" 2 3 extern "C" { extern __m128i _mm_hadd_epi16 (__m128i, __m128i); extern __m128i _mm_hadd_epi32 (__m128i, __m128i); extern __m128i _mm_hadds_epi16 (__m128i, __m128i); extern __m64 _mm_hadd_pi16 (__m64, __m64); extern __m64 _mm_hadd_pi32 (__m64, __m64); extern __m64 _mm_hadds_pi16 (__m64, __m64); extern __m128i _mm_hsub_epi16 (__m128i, __m128i); extern __m128i _mm_hsub_epi32 (__m128i, __m128i); extern __m128i _mm_hsubs_epi16 (__m128i, __m128i); extern __m64 _mm_hsub_pi16 (__m64, __m64); extern __m64 _mm_hsub_pi32 (__m64, __m64); extern __m64 _mm_hsubs_pi16 (__m64, __m64); extern __m128i _mm_maddubs_epi16 (__m128i, __m128i); extern __m64 _mm_maddubs_pi16 (__m64, __m64); extern __m128i _mm_mulhrs_epi16 (__m128i, __m128i); extern __m64 _mm_mulhrs_pi16 (__m64, __m64); extern __m128i _mm_shuffle_epi8 (__m128i, __m128i); extern __m64 _mm_shuffle_pi8 (__m64, __m64); extern __m128i _mm_sign_epi8 (__m128i, __m128i); extern __m128i _mm_sign_epi16 (__m128i, __m128i); extern __m128i _mm_sign_epi32 (__m128i, __m128i); extern __m64 _mm_sign_pi8 (__m64, __m64); extern __m64 _mm_sign_pi16 (__m64, __m64); extern __m64 _mm_sign_pi32 (__m64, __m64); extern __m128i _mm_alignr_epi8 (__m128i, __m128i, int); extern __m64 _mm_alignr_pi8 (__m64, __m64, int); extern __m128i _mm_abs_epi8 (__m128i); extern __m128i _mm_abs_epi16 (__m128i); extern __m128i _mm_abs_epi32 (__m128i); extern __m64 _mm_abs_pi8 (__m64); extern __m64 _mm_abs_pi16 (__m64); extern __m64 _mm_abs_pi32 (__m64); }; # 24 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/smmintrin.h" 2 3 # 45 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/smmintrin.h" 3 extern "C" { extern __m128i _mm_blend_epi16 (__m128i, __m128i, const int); extern __m128i _mm_blendv_epi8 (__m128i, __m128i, __m128i); extern __m128 _mm_blend_ps (__m128, __m128, const int); extern __m128 _mm_blendv_ps(__m128, __m128, __m128); extern __m128d _mm_blend_pd (__m128d, __m128d, const int); extern __m128d _mm_blendv_pd(__m128d, __m128d, __m128d); extern __m128 _mm_dp_ps(__m128, __m128, const int); extern __m128d _mm_dp_pd(__m128d, __m128d, const int); extern __m128i _mm_cmpeq_epi64(__m128i, __m128i); extern __m128i _mm_min_epi8 (__m128i, __m128i); extern __m128i _mm_max_epi8 (__m128i, __m128i); extern __m128i _mm_min_epu16(__m128i, __m128i); extern __m128i _mm_max_epu16(__m128i, __m128i); extern __m128i _mm_min_epi32(__m128i, __m128i); extern __m128i _mm_max_epi32(__m128i, __m128i); extern __m128i _mm_min_epu32(__m128i, __m128i); extern __m128i _mm_max_epu32(__m128i, __m128i); extern __m128i _mm_mullo_epi32(__m128i, __m128i); extern __m128i _mm_mul_epi32(__m128i, __m128i); extern int _mm_testz_si128(__m128i, __m128i); extern int _mm_testc_si128(__m128i, __m128i); extern int _mm_testnzc_si128(__m128i, __m128i); extern __m128 _mm_insert_ps(__m128, __m128, const int); extern int _mm_extract_ps(__m128, const int); extern __m128i _mm_insert_epi8 (__m128i, int, const int); extern __m128i _mm_insert_epi32(__m128i, int, const int); extern __m128i _mm_insert_epi64(__m128i, __int64, const int); extern int _mm_extract_epi8 (__m128i, const int); extern int _mm_extract_epi32(__m128i, const int); extern __int64 _mm_extract_epi64(__m128i, const int); extern __m128i _mm_minpos_epu16(__m128i); extern __m128d _mm_round_pd(__m128d, int); extern __m128d _mm_round_sd(__m128d, __m128d, int); extern __m128 _mm_round_ps(__m128, int); extern __m128 _mm_round_ss(__m128, __m128, int); extern __m128i _mm_cvtepi8_epi32 (__m128i); extern __m128i _mm_cvtepi16_epi32(__m128i); extern __m128i _mm_cvtepi8_epi64 (__m128i); extern __m128i _mm_cvtepi32_epi64(__m128i); extern __m128i _mm_cvtepi16_epi64(__m128i); extern __m128i _mm_cvtepi8_epi16 (__m128i); extern __m128i _mm_cvtepu8_epi32 (__m128i); extern __m128i _mm_cvtepu16_epi32(__m128i); extern __m128i _mm_cvtepu8_epi64 (__m128i); extern __m128i _mm_cvtepu32_epi64(__m128i); extern __m128i _mm_cvtepu16_epi64(__m128i); extern __m128i _mm_cvtepu8_epi16 (__m128i); extern __m128i _mm_packus_epi32(__m128i, __m128i); extern __m128i _mm_mpsadbw_epu8(__m128i, __m128i, const int); extern __m128i _mm_stream_load_si128(__m128i *); } # 25 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/nmmintrin.h" 2 3 extern "C" { extern __m128i _mm_cmpistrm (__m128i, __m128i, const int); extern int _mm_cmpistri (__m128i, __m128i, const int); extern __m128i _mm_cmpestrm (__m128i, int, __m128i, int, const int); extern int _mm_cmpestri (__m128i, int, __m128i, int, const int); extern int _mm_cmpistrz (__m128i, __m128i, const int); extern int _mm_cmpistrc (__m128i, __m128i, const int); extern int _mm_cmpistrs (__m128i, __m128i, const int); extern int _mm_cmpistro (__m128i, __m128i, const int); extern int _mm_cmpistra (__m128i, __m128i, const int); extern int _mm_cmpestrz (__m128i, int, __m128i, int, const int); extern int _mm_cmpestrc (__m128i, int, __m128i, int, const int); extern int _mm_cmpestrs (__m128i, int, __m128i, int, const int); extern int _mm_cmpestro (__m128i, int, __m128i, int, const int); extern int _mm_cmpestra (__m128i, int, __m128i, int, const int); extern __m128i _mm_cmpgt_epi64(__m128i, __m128i); extern int _mm_popcnt_u32(unsigned int); extern __int64 _mm_popcnt_u64(unsigned __int64); extern unsigned int _mm_crc32_u8 (unsigned int, unsigned char); extern unsigned int _mm_crc32_u16(unsigned int, unsigned short); extern unsigned int _mm_crc32_u32(unsigned int, unsigned int); extern unsigned __int64 _mm_crc32_u64(unsigned __int64, unsigned __int64); } # 24 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/wmmintrin.h" 2 3 extern "C" { extern __m128i _mm_aesdec_si128(__m128i, __m128i); extern __m128i _mm_aesdeclast_si128(__m128i, __m128i); extern __m128i _mm_aesenc_si128(__m128i, __m128i); extern __m128i _mm_aesenclast_si128(__m128i, __m128i); extern __m128i _mm_aesimc_si128(__m128i); extern __m128i _mm_aeskeygenassist_si128(__m128i, const int); extern __m128i _mm_clmulepi64_si128(__m128i, __m128i, const int); } # 15 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 2 3 extern "C" { typedef union __declspec(align(32)) __declspec(intrin_type) __m256 { float m256_f32[8]; } __m256; typedef struct __declspec(align(32)) __declspec(intrin_type) __m256d { double m256d_f64[4]; } __m256d; typedef union __declspec(align(32)) __declspec(intrin_type) __m256i { __int64 m256i_gcc_compatibility[4]; __int8 m256i_i8[32]; __int16 m256i_i16[16]; __int32 m256i_i32[8]; __int64 m256i_i64[4]; unsigned __int8 m256i_u8[32]; unsigned __int16 m256i_u16[16]; unsigned __int32 m256i_u32[8]; unsigned __int64 m256i_u64[4]; } __m256i; typedef int __v2si __attribute__ ((__vector_size__ (8))); typedef short __v4hi __attribute__ ((__vector_size__ (8))); typedef char __v8qi __attribute__ ((__vector_size__ (8))); typedef __int64 __v1di __attribute__ ((__vector_size__ (8))); typedef float __v2sf __attribute__ ((__vector_size__ (8))); typedef float __v4sf __attribute__ ((__vector_size__ (16))); typedef double __v2df __attribute__ ((__vector_size__ (16))); typedef __int64 __v2di __attribute__ ((__vector_size__ (16))); typedef int __v4si __attribute__ ((__vector_size__ (16))); typedef short __v8hi __attribute__ ((__vector_size__ (16))); typedef char __v16qi __attribute__((__vector_size__ (16))); typedef double __v4df __attribute__ ((__vector_size__ (32))); typedef float __v8sf __attribute__ ((__vector_size__ (32))); typedef __int64 __v4di __attribute__ ((__vector_size__ (32))); typedef int __v8si __attribute__ ((__vector_size__ (32))); typedef short __v16hi __attribute__((__vector_size__ (32))); typedef char __v32qi __attribute__((__vector_size__ (32))); # 112 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 extern void _allow_cpu_features(unsigned __int64); extern int _may_i_use_cpu_feature(unsigned __int64); # 151 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 extern __int64 _rdtsc(void); extern __int64 _rdpmc(int); extern int _bswap(int); extern int _bit_scan_forward(int); extern int _bit_scan_reverse(int); extern int _popcnt32(int); extern unsigned short _rotwl(unsigned short, int); extern unsigned short _rotwr(unsigned short, int); extern unsigned int _rotl(unsigned int, int); extern unsigned int _rotr(unsigned int, int); extern unsigned long _lrotl(unsigned long, int); extern unsigned long _lrotr(unsigned long, int); extern __m128 _mm_acos_ps(__m128); extern __m128d _mm_acos_pd(__m128d); extern __m256 _mm256_acos_ps(__m256); extern __m256d _mm256_acos_pd(__m256d); extern __m128 _mm_acosh_ps(__m128); extern __m128d _mm_acosh_pd(__m128d); extern __m256 _mm256_acosh_ps(__m256); extern __m256d _mm256_acosh_pd(__m256d); extern __m128 _mm_asin_ps(__m128); extern __m128d _mm_asin_pd(__m128d); extern __m256 _mm256_asin_ps(__m256); extern __m256d _mm256_asin_pd(__m256d); extern __m128 _mm_asinh_ps(__m128); extern __m128d _mm_asinh_pd(__m128d); extern __m256 _mm256_asinh_ps(__m256); extern __m256d _mm256_asinh_pd(__m256d); extern __m128 _mm_atan_ps(__m128); extern __m128d _mm_atan_pd(__m128d); extern __m256 _mm256_atan_ps(__m256); extern __m256d _mm256_atan_pd(__m256d); extern __m128 _mm_atan2_ps(__m128, __m128); extern __m128d _mm_atan2_pd(__m128d, __m128d); extern __m256 _mm256_atan2_ps(__m256, __m256); extern __m256d _mm256_atan2_pd(__m256d, __m256d); extern __m128 _mm_atanh_ps(__m128); extern __m128d _mm_atanh_pd(__m128d); extern __m256 _mm256_atanh_ps(__m256); extern __m256d _mm256_atanh_pd(__m256d); extern __m128 _mm_cbrt_ps(__m128); extern __m128d _mm_cbrt_pd(__m128d); extern __m256 _mm256_cbrt_ps(__m256); extern __m256d _mm256_cbrt_pd(__m256d); extern __m128 _mm_svml_ceil_ps(__m128); extern __m128d _mm_svml_ceil_pd(__m128d); extern __m256 _mm256_svml_ceil_ps(__m256); extern __m256d _mm256_svml_ceil_pd(__m256d); extern __m128 _mm_cos_ps(__m128); extern __m128d _mm_cos_pd(__m128d); extern __m256 _mm256_cos_ps(__m256); extern __m256d _mm256_cos_pd(__m256d); extern __m128 _mm_cosh_ps(__m128); extern __m128d _mm_cosh_pd(__m128d); extern __m256 _mm256_cosh_ps(__m256); extern __m256d _mm256_cosh_pd(__m256d); extern __m128 _mm_exp_ps(__m128); extern __m128d _mm_exp_pd(__m128d); extern __m256 _mm256_exp_ps(__m256); extern __m256d _mm256_exp_pd(__m256d); extern __m128 _mm_exp2_ps(__m128); extern __m128d _mm_exp2_pd(__m128d); extern __m256 _mm256_exp2_ps(__m256); extern __m256d _mm256_exp2_pd(__m256d); extern __m128 _mm_svml_floor_ps(__m128); extern __m128d _mm_svml_floor_pd(__m128d); extern __m256 _mm256_svml_floor_ps(__m256); extern __m256d _mm256_svml_floor_pd(__m256d); extern __m128 _mm_invcbrt_ps(__m128); extern __m128d _mm_invcbrt_pd(__m128d); extern __m256 _mm256_invcbrt_ps(__m256); extern __m256d _mm256_invcbrt_pd(__m256d); extern __m128 _mm_svml_sqrt_ps(__m128); extern __m128d _mm_svml_sqrt_pd(__m128d); extern __m256 _mm256_svml_sqrt_ps(__m256); extern __m256d _mm256_svml_sqrt_pd(__m256d); extern __m128 _mm_invsqrt_ps(__m128); extern __m128d _mm_invsqrt_pd(__m128d); extern __m256 _mm256_invsqrt_ps(__m256); extern __m256d _mm256_invsqrt_pd(__m256d); extern __m128 _mm_log_ps(__m128); extern __m128d _mm_log_pd(__m128d); extern __m256 _mm256_log_ps(__m256); extern __m256d _mm256_log_pd(__m256d); extern __m128 _mm_log10_ps(__m128); extern __m128d _mm_log10_pd(__m128d); extern __m256 _mm256_log10_ps(__m256); extern __m256d _mm256_log10_pd(__m256d); extern __m128 _mm_log2_ps(__m128); extern __m128d _mm_log2_pd(__m128d); extern __m256 _mm256_log2_ps(__m256); extern __m256d _mm256_log2_pd(__m256d); extern __m128 _mm_pow_ps(__m128, __m128); extern __m128d _mm_pow_pd(__m128d, __m128d); extern __m256 _mm256_pow_ps(__m256, __m256); extern __m256d _mm256_pow_pd(__m256d, __m256d); extern __m128 _mm_svml_round_ps(__m128); extern __m128d _mm_svml_round_pd(__m128d); extern __m256 _mm256_svml_round_ps(__m256); extern __m256d _mm256_svml_round_pd(__m256d); extern __m128 _mm_sin_ps(__m128); extern __m128d _mm_sin_pd(__m128d); extern __m256 _mm256_sin_ps(__m256); extern __m256d _mm256_sin_pd(__m256d); extern __m128 _mm_sincos_ps(__m128 *, __m128); extern __m128d _mm_sincos_pd(__m128d *, __m128d); extern __m256 _mm256_sincos_ps(__m256 *, __m256); extern __m256d _mm256_sincos_pd(__m256d *, __m256d); extern __m128 _mm_sinh_ps(__m128); extern __m128d _mm_sinh_pd(__m128d); extern __m256 _mm256_sinh_ps(__m256); extern __m256d _mm256_sinh_pd(__m256d); extern __m128 _mm_tan_ps(__m128); extern __m128d _mm_tan_pd(__m128d); extern __m256 _mm256_tan_ps(__m256); extern __m256d _mm256_tan_pd(__m256d); extern __m128 _mm_tanh_ps(__m128); extern __m128d _mm_tanh_pd(__m128d); extern __m256 _mm256_tanh_ps(__m256); extern __m256d _mm256_tanh_pd(__m256d); extern __m128 _mm_trunc_ps(__m128); extern __m128d _mm_trunc_pd(__m128d); extern __m256 _mm256_trunc_ps(__m256); extern __m256d _mm256_trunc_pd(__m256d); extern __m128 _mm_erf_ps(__m128); extern __m128d _mm_erf_pd(__m128d); extern __m256 _mm256_erf_ps(__m256); extern __m256d _mm256_erf_pd(__m256d); extern __m128 _mm_erfc_ps(__m128); extern __m128d _mm_erfc_pd(__m128d); extern __m256 _mm256_erfc_ps(__m256); extern __m256d _mm256_erfc_pd(__m256d); extern __m128 _mm_erfcinv_ps(__m128); extern __m128d _mm_erfcinv_pd(__m128d); extern __m256 _mm256_erfcinv_ps(__m256); extern __m256d _mm256_erfcinv_pd(__m256d); extern __m128 _mm_erfinv_ps(__m128); extern __m128d _mm_erfinv_pd(__m128d); extern __m256 _mm256_erfinv_ps(__m256); extern __m256d _mm256_erfinv_pd(__m256d); extern __m128 _mm_cdfnorm_ps(__m128); extern __m128d _mm_cdfnorm_pd(__m128d); extern __m256 _mm256_cdfnorm_ps(__m256); extern __m256d _mm256_cdfnorm_pd(__m256d); extern __m128 _mm_cdfnorminv_ps(__m128); extern __m128d _mm_cdfnorminv_pd(__m128d); extern __m256 _mm256_cdfnorminv_ps(__m256); extern __m256d _mm256_cdfnorminv_pd(__m256d); extern __m128 _mm_exp10_ps(__m128); extern __m128d _mm_exp10_pd(__m128d); extern __m256 _mm256_exp10_ps(__m256); extern __m256d _mm256_exp10_pd(__m256d); extern __m128 _mm_expm1_ps(__m128); extern __m128d _mm_expm1_pd(__m128d); extern __m256 _mm256_expm1_ps(__m256); extern __m256d _mm256_expm1_pd(__m256d); extern __m128 _mm_log1p_ps(__m128); extern __m128d _mm_log1p_pd(__m128d); extern __m256 _mm256_log1p_ps(__m256); extern __m256d _mm256_log1p_pd(__m256d); extern __m128 _mm_logb_ps(__m128); extern __m128d _mm_logb_pd(__m128d); extern __m256 _mm256_logb_ps(__m256); extern __m256d _mm256_logb_pd(__m256d); extern __m128 _mm_sind_ps(__m128); extern __m128d _mm_sind_pd(__m128d); extern __m256 _mm256_sind_ps(__m256); extern __m256d _mm256_sind_pd(__m256d); extern __m128 _mm_cosd_ps(__m128); extern __m128d _mm_cosd_pd(__m128d); extern __m256 _mm256_cosd_ps(__m256); extern __m256d _mm256_cosd_pd(__m256d); extern __m128 _mm_tand_ps(__m128); extern __m128d _mm_tand_pd(__m128d); extern __m256 _mm256_tand_ps(__m256); extern __m256d _mm256_tand_pd(__m256d); extern __m128 _mm_hypot_ps(__m128, __m128); extern __m128d _mm_hypot_pd(__m128d, __m128d); extern __m256 _mm256_hypot_ps(__m256, __m256); extern __m256d _mm256_hypot_pd(__m256d, __m256d); extern __m128i _mm_div_epi8(__m128i, __m128i); extern __m128i _mm_div_epi16(__m128i, __m128i); extern __m128i _mm_div_epi32(__m128i, __m128i); extern __m128i _mm_div_epi64(__m128i, __m128i); extern __m256i _mm256_div_epi8(__m256i, __m256i); extern __m256i _mm256_div_epi16(__m256i, __m256i); extern __m256i _mm256_div_epi32(__m256i, __m256i); extern __m256i _mm256_div_epi64(__m256i, __m256i); extern __m128i _mm_idivrem_epi32(__m128i *, __m128i, __m128i); extern __m256i _mm256_idivrem_epi32(__m256i *, __m256i, __m256i); extern __m128i _mm_rem_epi8(__m128i, __m128i); extern __m128i _mm_rem_epi16(__m128i, __m128i); extern __m128i _mm_rem_epi32(__m128i, __m128i); extern __m128i _mm_rem_epi64(__m128i, __m128i); extern __m256i _mm256_rem_epi8(__m256i, __m256i); extern __m256i _mm256_rem_epi16(__m256i, __m256i); extern __m256i _mm256_rem_epi32(__m256i, __m256i); extern __m256i _mm256_rem_epi64(__m256i, __m256i); extern __m128i _mm_div_epu8(__m128i, __m128i); extern __m128i _mm_div_epu16(__m128i, __m128i); extern __m128i _mm_div_epu32(__m128i, __m128i); extern __m128i _mm_div_epu64(__m128i, __m128i); extern __m256i _mm256_div_epu8(__m256i, __m256i); extern __m256i _mm256_div_epu16(__m256i, __m256i); extern __m256i _mm256_div_epu32(__m256i, __m256i); extern __m256i _mm256_div_epu64(__m256i, __m256i); extern __m128i _mm_udivrem_epi32(__m128i *, __m128i, __m128i); extern __m256i _mm256_udivrem_epi32(__m256i *, __m256i, __m256i); extern __m128i _mm_rem_epu8(__m128i, __m128i); extern __m128i _mm_rem_epu16(__m128i, __m128i); extern __m128i _mm_rem_epu32(__m128i, __m128i); extern __m128i _mm_rem_epu64(__m128i, __m128i); extern __m256i _mm256_rem_epu8(__m256i, __m256i); extern __m256i _mm256_rem_epu16(__m256i, __m256i); extern __m256i _mm256_rem_epu32(__m256i, __m256i); extern __m256i _mm256_rem_epu64(__m256i, __m256i); extern __m128 _mm_csqrt_ps(__m128); extern __m256 _mm256_csqrt_ps(__m256); extern __m128 _mm_cexp_ps(__m128); extern __m256 _mm256_cexp_ps(__m256); extern __m128 _mm_clog_ps(__m128); extern __m256 _mm256_clog_ps(__m256); extern __m256d _mm256_add_pd(__m256d, __m256d); extern __m256 _mm256_add_ps(__m256, __m256); extern __m256d _mm256_addsub_pd(__m256d, __m256d); extern __m256 _mm256_addsub_ps(__m256, __m256); extern __m256d _mm256_and_pd(__m256d, __m256d); extern __m256 _mm256_and_ps(__m256, __m256); extern __m256d _mm256_andnot_pd(__m256d, __m256d); extern __m256 _mm256_andnot_ps(__m256, __m256); extern __m256d _mm256_blend_pd(__m256d, __m256d, const int); extern __m256 _mm256_blend_ps(__m256, __m256, const int); extern __m256d _mm256_blendv_pd(__m256d, __m256d, __m256d); extern __m256 _mm256_blendv_ps(__m256, __m256, __m256); extern __m256d _mm256_div_pd(__m256d, __m256d); extern __m256 _mm256_div_ps(__m256, __m256); extern __m256 _mm256_dp_ps(__m256, __m256, const int); extern __m256d _mm256_hadd_pd(__m256d, __m256d); extern __m256 _mm256_hadd_ps(__m256, __m256); extern __m256d _mm256_hsub_pd(__m256d, __m256d); extern __m256 _mm256_hsub_ps(__m256, __m256); extern __m256d _mm256_max_pd(__m256d, __m256d); extern __m256 _mm256_max_ps(__m256, __m256); extern __m256d _mm256_min_pd(__m256d, __m256d); extern __m256 _mm256_min_ps(__m256, __m256); extern __m256d _mm256_mul_pd(__m256d, __m256d); extern __m256 _mm256_mul_ps(__m256, __m256); extern __m256d _mm256_or_pd(__m256d, __m256d); extern __m256 _mm256_or_ps(__m256, __m256); extern __m256d _mm256_shuffle_pd(__m256d, __m256d, const int); extern __m256 _mm256_shuffle_ps(__m256, __m256, const int); extern __m256d _mm256_sub_pd(__m256d, __m256d); extern __m256 _mm256_sub_ps(__m256, __m256); extern __m256d _mm256_xor_pd(__m256d, __m256d); extern __m256 _mm256_xor_ps(__m256, __m256); extern __m128d _mm_cmp_pd(__m128d, __m128d, const int); extern __m256d _mm256_cmp_pd(__m256d, __m256d, const int); extern __m128 _mm_cmp_ps(__m128, __m128, const int); extern __m256 _mm256_cmp_ps(__m256, __m256, const int); extern __m128d _mm_cmp_sd(__m128d, __m128d, const int); extern __m128 _mm_cmp_ss(__m128, __m128, const int); extern __m256d _mm256_cvtepi32_pd(__m128i); extern __m256 _mm256_cvtepi32_ps(__m256i); extern __m128 _mm256_cvtpd_ps(__m256d); extern __m256i _mm256_cvtps_epi32(__m256); extern __m256d _mm256_cvtps_pd(__m128); extern __m128i _mm256_cvttpd_epi32(__m256d); extern __m128i _mm256_cvtpd_epi32(__m256d); extern __m256i _mm256_cvttps_epi32(__m256); extern __m128 _mm256_extractf128_ps(__m256, const int); extern __m128d _mm256_extractf128_pd(__m256d, const int); extern __m128i _mm256_extractf128_si256(__m256i, const int); extern void _mm256_zeroall(void); extern void _mm256_zeroupper(void); extern __m256 _mm256_permutevar_ps(__m256, __m256i); extern __m128 _mm_permutevar_ps(__m128, __m128i); extern __m256 _mm256_permute_ps(__m256, int); extern __m128 _mm_permute_ps(__m128, int); extern __m256d _mm256_permutevar_pd(__m256d, __m256i); extern __m128d _mm_permutevar_pd(__m128d, __m128i); extern __m256d _mm256_permute_pd(__m256d, int); extern __m128d _mm_permute_pd(__m128d, int); extern __m256 _mm256_permute2f128_ps(__m256, __m256, int); extern __m256d _mm256_permute2f128_pd(__m256d, __m256d, int); extern __m256i _mm256_permute2f128_si256(__m256i, __m256i, int); extern __m256 _mm256_broadcast_ss(float const *); extern __m128 _mm_broadcast_ss(float const *); extern __m256d _mm256_broadcast_sd(double const *); extern __m256 _mm256_broadcast_ps(__m128 const *); extern __m256d _mm256_broadcast_pd(__m128d const *); extern __m256 _mm256_insertf128_ps(__m256, __m128, int); extern __m256d _mm256_insertf128_pd(__m256d, __m128d, int); extern __m256i _mm256_insertf128_si256(__m256i, __m128i, int); extern __m256d _mm256_load_pd(double const *); extern void _mm256_store_pd(double *, __m256d); extern __m256 _mm256_load_ps(float const *); extern void _mm256_store_ps(float *, __m256); extern __m256d _mm256_loadu_pd(double const *); extern void _mm256_storeu_pd(double *, __m256d); extern __m256 _mm256_loadu_ps(float const *); extern void _mm256_storeu_ps(float *, __m256); extern __m256i _mm256_load_si256(__m256i const *); extern void _mm256_store_si256(__m256i *, __m256i); extern __m256i _mm256_loadu_si256(__m256i const *); extern void _mm256_storeu_si256(__m256i *, __m256i); # 1148 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 # 1156 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 # 1164 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 extern __m256d _mm256_maskload_pd(double const *, __m256i); extern void _mm256_maskstore_pd(double *, __m256i, __m256d); extern __m128d _mm_maskload_pd(double const *, __m128i); extern void _mm_maskstore_pd(double *, __m128i, __m128d); extern __m256 _mm256_maskload_ps(float const *, __m256i); extern void _mm256_maskstore_ps(float *, __m256i, __m256); extern __m128 _mm_maskload_ps(float const *, __m128i); extern void _mm_maskstore_ps(float *, __m128i, __m128); extern __m256 _mm256_movehdup_ps(__m256); extern __m256 _mm256_moveldup_ps(__m256); extern __m256d _mm256_movedup_pd(__m256d); extern __m256i _mm256_lddqu_si256(__m256i const *); extern void _mm256_stream_si256(__m256i *, __m256i); extern void _mm256_stream_pd(double *, __m256d); extern void _mm256_stream_ps(float *, __m256); extern __m256 _mm256_rcp_ps(__m256); extern __m256 _mm256_rsqrt_ps(__m256); extern __m256d _mm256_sqrt_pd(__m256d); extern __m256 _mm256_sqrt_ps(__m256); extern __m256d _mm256_round_pd(__m256d, int); extern __m256 _mm256_round_ps(__m256, int); extern __m256d _mm256_unpackhi_pd(__m256d, __m256d); extern __m256 _mm256_unpackhi_ps(__m256, __m256); extern __m256d _mm256_unpacklo_pd(__m256d, __m256d); extern __m256 _mm256_unpacklo_ps(__m256, __m256); extern int _mm256_testz_si256(__m256i, __m256i); extern int _mm256_testc_si256(__m256i, __m256i); extern int _mm256_testnzc_si256(__m256i, __m256i); extern int _mm256_testz_pd(__m256d, __m256d); extern int _mm256_testc_pd(__m256d, __m256d); extern int _mm256_testnzc_pd(__m256d, __m256d); extern int _mm_testz_pd(__m128d, __m128d); extern int _mm_testc_pd(__m128d, __m128d); extern int _mm_testnzc_pd(__m128d, __m128d); extern int _mm256_testz_ps(__m256, __m256); extern int _mm256_testc_ps(__m256, __m256); extern int _mm256_testnzc_ps(__m256, __m256); extern int _mm_testz_ps(__m128, __m128); extern int _mm_testc_ps(__m128, __m128); extern int _mm_testnzc_ps(__m128, __m128); extern int _mm256_movemask_pd(__m256d); extern int _mm256_movemask_ps(__m256); extern __m256d _mm256_setzero_pd(void); extern __m256 _mm256_setzero_ps(void); extern __m256i _mm256_setzero_si256(void); extern __m256d _mm256_set_pd(double, double, double, double); extern __m256 _mm256_set_ps(float, float, float, float, float, float, float, float); extern __m256i _mm256_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); extern __m256i _mm256_set_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short); extern __m256i _mm256_set_epi32(int, int, int, int, int, int, int, int); extern __m256i _mm256_set_epi64x(__int64, __int64, __int64, __int64); extern __m256d _mm256_setr_pd(double, double, double, double); extern __m256 _mm256_setr_ps(float, float, float, float, float, float, float, float); extern __m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char); extern __m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short); extern __m256i _mm256_setr_epi32(int, int, int, int, int, int, int, int); extern __m256i _mm256_setr_epi64x(__int64, __int64, __int64, __int64); extern __m256d _mm256_set1_pd(double); extern __m256 _mm256_set1_ps(float); extern __m256i _mm256_set1_epi8(char); extern __m256i _mm256_set1_epi16(short); extern __m256i _mm256_set1_epi32(int); extern __m256i _mm256_set1_epi64x(long long); extern __m256 _mm256_castpd_ps(__m256d); extern __m256d _mm256_castps_pd(__m256); extern __m256i _mm256_castps_si256(__m256); extern __m256i _mm256_castpd_si256(__m256d); extern __m256 _mm256_castsi256_ps(__m256i); extern __m256d _mm256_castsi256_pd(__m256i); extern __m128 _mm256_castps256_ps128(__m256); extern __m128d _mm256_castpd256_pd128(__m256d); extern __m128i _mm256_castsi256_si128(__m256i); extern __m256 _mm256_castps128_ps256(__m128); extern __m256d _mm256_castpd128_pd256(__m128d); extern __m256i _mm256_castsi128_si256(__m128i); extern __int64 _bswap64(__int64); extern unsigned __int64 __rdtscp(unsigned int *); extern int _popcnt64(__int64); extern __m256 _mm256_cvtph_ps(__m128i); extern __m128i _mm256_cvtps_ph(__m256, int); extern unsigned __int32 _castf32_u32(float); extern unsigned __int64 _castf64_u64(double); extern float _castu32_f32(unsigned __int32); extern double _castu64_f64(unsigned __int64); extern __m128 _mm_undefined_ps(void); extern __m128d _mm_undefined_pd(void); extern __m128i _mm_undefined_si128(void); extern __m256 _mm256_undefined_ps(void); extern __m256d _mm256_undefined_pd(void); extern __m256i _mm256_undefined_si256(void); extern unsigned __int64 _xgetbv(unsigned int); extern void _xsetbv(unsigned int, unsigned __int64); extern void _xsave(void *, unsigned __int64); extern void _xsave64(void *, unsigned __int64); extern void _xsaveopt(void *, unsigned __int64); extern void _xsaveopt64(void *, unsigned __int64); extern void _xrstor(void *, unsigned __int64); extern void _xrstor64(void *, unsigned __int64); extern void _fxsave(void *); extern void _fxsave64(void *); extern void _fxrstor(void *); extern void _fxrstor64(void *); extern int _rdrand16_step(unsigned short *); extern int _rdrand32_step(unsigned int *); extern int _rdrand64_step(unsigned __int64 *); extern unsigned int _readfsbase_u32(); extern unsigned int _readgsbase_u32(); extern unsigned __int64 _readfsbase_u64(); extern unsigned __int64 _readgsbase_u64(); extern void _writefsbase_u32(unsigned int); extern void _writegsbase_u32(unsigned int); extern void _writefsbase_u64(unsigned __int64); extern void _writegsbase_u64(unsigned __int64); extern __m128 _mm_fmadd_ps(__m128, __m128, __m128); extern __m128d _mm_fmadd_pd(__m128d, __m128d, __m128d); extern __m128 _mm_fmadd_ss(__m128, __m128, __m128); extern __m128d _mm_fmadd_sd(__m128d, __m128d, __m128d); extern __m128 _mm_fmsub_ps(__m128, __m128, __m128); extern __m128d _mm_fmsub_pd(__m128d, __m128d, __m128d); extern __m128 _mm_fmsub_ss(__m128, __m128, __m128); extern __m128d _mm_fmsub_sd(__m128d, __m128d, __m128d); extern __m128 _mm_fnmadd_ps(__m128, __m128, __m128); extern __m128d _mm_fnmadd_pd(__m128d, __m128d, __m128d); extern __m128 _mm_fnmadd_ss(__m128, __m128, __m128); extern __m128d _mm_fnmadd_sd(__m128d, __m128d, __m128d); extern __m128 _mm_fnmsub_ps(__m128, __m128, __m128); extern __m128d _mm_fnmsub_pd(__m128d, __m128d, __m128d); extern __m128 _mm_fnmsub_ss(__m128, __m128, __m128); extern __m128d _mm_fnmsub_sd(__m128d, __m128d, __m128d); extern __m256 _mm256_fmadd_ps(__m256, __m256, __m256); extern __m256d _mm256_fmadd_pd(__m256d, __m256d, __m256d); extern __m256 _mm256_fmsub_ps(__m256, __m256, __m256); extern __m256d _mm256_fmsub_pd(__m256d, __m256d, __m256d); extern __m256 _mm256_fnmadd_ps(__m256, __m256, __m256); extern __m256d _mm256_fnmadd_pd(__m256d, __m256d, __m256d); extern __m256 _mm256_fnmsub_ps(__m256, __m256, __m256); extern __m256d _mm256_fnmsub_pd(__m256d, __m256d, __m256d); extern __m128 _mm_fmaddsub_ps(__m128, __m128, __m128); extern __m128d _mm_fmaddsub_pd(__m128d, __m128d, __m128d); extern __m128 _mm_fmsubadd_ps(__m128, __m128, __m128); extern __m128d _mm_fmsubadd_pd(__m128d, __m128d, __m128d); extern __m256 _mm256_fmaddsub_ps(__m256, __m256, __m256); extern __m256d _mm256_fmaddsub_pd(__m256d, __m256d, __m256d); extern __m256 _mm256_fmsubadd_ps(__m256, __m256, __m256); extern __m256d _mm256_fmsubadd_pd(__m256d, __m256d, __m256d); extern __m256i _mm256_cmpeq_epi8(__m256i, __m256i); extern __m256i _mm256_cmpeq_epi16(__m256i, __m256i); extern __m256i _mm256_cmpeq_epi32(__m256i, __m256i); extern __m256i _mm256_cmpeq_epi64(__m256i, __m256i); extern __m256i _mm256_cmpgt_epi8(__m256i, __m256i); extern __m256i _mm256_cmpgt_epi16(__m256i, __m256i); extern __m256i _mm256_cmpgt_epi32(__m256i, __m256i); extern __m256i _mm256_cmpgt_epi64(__m256i, __m256i); extern __m256i _mm256_max_epi8(__m256i, __m256i); extern __m256i _mm256_max_epi16(__m256i, __m256i); extern __m256i _mm256_max_epi32(__m256i, __m256i); extern __m256i _mm256_max_epu8(__m256i, __m256i); extern __m256i _mm256_max_epu16(__m256i, __m256i); extern __m256i _mm256_max_epu32(__m256i, __m256i); extern __m256i _mm256_min_epi8(__m256i, __m256i); extern __m256i _mm256_min_epi16(__m256i, __m256i); extern __m256i _mm256_min_epi32(__m256i, __m256i); extern __m256i _mm256_min_epu8(__m256i, __m256i); extern __m256i _mm256_min_epu16(__m256i, __m256i); extern __m256i _mm256_min_epu32(__m256i, __m256i); extern __m256i _mm256_and_si256(__m256i, __m256i); extern __m256i _mm256_andnot_si256(__m256i, __m256i); extern __m256i _mm256_or_si256(__m256i, __m256i); extern __m256i _mm256_xor_si256(__m256i, __m256i); extern __m256i _mm256_abs_epi8(__m256i); extern __m256i _mm256_abs_epi16(__m256i); extern __m256i _mm256_abs_epi32(__m256i); extern __m256i _mm256_add_epi8(__m256i, __m256i); extern __m256i _mm256_add_epi16(__m256i, __m256i); extern __m256i _mm256_add_epi32(__m256i, __m256i); extern __m256i _mm256_add_epi64(__m256i, __m256i); extern __m256i _mm256_adds_epi8(__m256i, __m256i); extern __m256i _mm256_adds_epi16(__m256i, __m256i); extern __m256i _mm256_adds_epu8(__m256i, __m256i); extern __m256i _mm256_adds_epu16(__m256i, __m256i); extern __m256i _mm256_sub_epi8(__m256i, __m256i); extern __m256i _mm256_sub_epi16(__m256i, __m256i); extern __m256i _mm256_sub_epi32(__m256i, __m256i); extern __m256i _mm256_sub_epi64(__m256i, __m256i); extern __m256i _mm256_subs_epi8(__m256i, __m256i); extern __m256i _mm256_subs_epi16(__m256i, __m256i); extern __m256i _mm256_subs_epu8(__m256i, __m256i); extern __m256i _mm256_subs_epu16(__m256i, __m256i); extern __m256i _mm256_avg_epu8(__m256i, __m256i); extern __m256i _mm256_avg_epu16(__m256i, __m256i); extern __m256i _mm256_hadd_epi16(__m256i, __m256i); extern __m256i _mm256_hadd_epi32(__m256i, __m256i); extern __m256i _mm256_hadds_epi16(__m256i, __m256i); extern __m256i _mm256_hsub_epi16(__m256i, __m256i); extern __m256i _mm256_hsub_epi32(__m256i, __m256i); extern __m256i _mm256_hsubs_epi16(__m256i, __m256i); extern __m256i _mm256_madd_epi16(__m256i, __m256i); extern __m256i _mm256_maddubs_epi16(__m256i, __m256i); extern __m256i _mm256_mulhi_epi16(__m256i, __m256i); extern __m256i _mm256_mulhi_epu16(__m256i, __m256i); extern __m256i _mm256_mullo_epi16(__m256i, __m256i); extern __m256i _mm256_mullo_epi32(__m256i, __m256i); extern __m256i _mm256_mul_epu32(__m256i, __m256i); extern __m256i _mm256_mul_epi32(__m256i, __m256i); extern __m256i _mm256_sign_epi8(__m256i, __m256i); extern __m256i _mm256_sign_epi16(__m256i, __m256i); extern __m256i _mm256_sign_epi32(__m256i, __m256i); extern __m256i _mm256_mulhrs_epi16(__m256i, __m256i); extern __m256i _mm256_sad_epu8(__m256i, __m256i); extern __m256i _mm256_mpsadbw_epu8(__m256i, __m256i, const int); extern __m256i _mm256_bslli_epi128(__m256i, const int); extern __m256i _mm256_slli_si256(__m256i, const int); extern __m256i _mm256_bsrli_epi128(__m256i, const int); extern __m256i _mm256_srli_si256(__m256i, const int); extern __m256i _mm256_sll_epi16(__m256i, __m128i); extern __m256i _mm256_sll_epi32(__m256i, __m128i); extern __m256i _mm256_sll_epi64(__m256i, __m128i); extern __m256i _mm256_slli_epi16(__m256i, int); extern __m256i _mm256_slli_epi32(__m256i, int); extern __m256i _mm256_slli_epi64(__m256i, int); extern __m256i _mm256_sllv_epi32(__m256i, __m256i); extern __m256i _mm256_sllv_epi64(__m256i, __m256i); extern __m128i _mm_sllv_epi32(__m128i, __m128i); extern __m128i _mm_sllv_epi64(__m128i, __m128i); extern __m256i _mm256_sra_epi16(__m256i, __m128i); extern __m256i _mm256_sra_epi32(__m256i, __m128i); extern __m256i _mm256_srai_epi16(__m256i, int); extern __m256i _mm256_srai_epi32(__m256i, int); extern __m256i _mm256_srav_epi32(__m256i, __m256i); extern __m128i _mm_srav_epi32(__m128i, __m128i); extern __m256i _mm256_srl_epi16(__m256i, __m128i); extern __m256i _mm256_srl_epi32(__m256i, __m128i); extern __m256i _mm256_srl_epi64(__m256i, __m128i); extern __m256i _mm256_srli_epi16(__m256i, int); extern __m256i _mm256_srli_epi32(__m256i, int); extern __m256i _mm256_srli_epi64(__m256i, int); extern __m256i _mm256_srlv_epi32(__m256i, __m256i); extern __m256i _mm256_srlv_epi64(__m256i, __m256i); extern __m128i _mm_srlv_epi32(__m128i, __m128i); extern __m128i _mm_srlv_epi64(__m128i, __m128i); extern __m128i _mm_blend_epi32(__m128i, __m128i, const int); extern __m256i _mm256_blend_epi32(__m256i,__m256i, const int); extern __m256i _mm256_alignr_epi8(__m256i, __m256i, const int); extern __m256i _mm256_blendv_epi8(__m256i, __m256i, __m256i); extern __m256i _mm256_blend_epi16(__m256i, __m256i, const int); extern __m256i _mm256_packs_epi16(__m256i, __m256i); extern __m256i _mm256_packs_epi32(__m256i, __m256i); extern __m256i _mm256_packus_epi16(__m256i, __m256i); extern __m256i _mm256_packus_epi32(__m256i, __m256i); extern __m256i _mm256_unpackhi_epi8(__m256i, __m256i); extern __m256i _mm256_unpackhi_epi16(__m256i, __m256i); extern __m256i _mm256_unpackhi_epi32(__m256i, __m256i); extern __m256i _mm256_unpackhi_epi64(__m256i, __m256i); extern __m256i _mm256_unpacklo_epi8(__m256i, __m256i); extern __m256i _mm256_unpacklo_epi16(__m256i, __m256i); extern __m256i _mm256_unpacklo_epi32(__m256i, __m256i); extern __m256i _mm256_unpacklo_epi64(__m256i, __m256i); extern __m256i _mm256_shuffle_epi8(__m256i, __m256i); extern __m256i _mm256_shuffle_epi32(__m256i, const int); extern __m256i _mm256_shufflehi_epi16(__m256i, const int); extern __m256i _mm256_shufflelo_epi16(__m256i, const int); extern __m128i _mm256_extracti128_si256(__m256i, const int); extern __m256i _mm256_inserti128_si256(__m256i, __m128i, const int); extern __m128 _mm_broadcastss_ps(__m128); extern __m128d _mm_broadcastsd_pd(__m128d); extern __m128i _mm_broadcastb_epi8(__m128i); extern __m128i _mm_broadcastw_epi16(__m128i); extern __m128i _mm_broadcastd_epi32(__m128i); extern __m128i _mm_broadcastq_epi64(__m128i); extern __m256 _mm256_broadcastss_ps(__m128); extern __m256d _mm256_broadcastsd_pd(__m128d); extern __m256i _mm256_broadcastb_epi8(__m128i); extern __m256i _mm256_broadcastw_epi16(__m128i); extern __m256i _mm256_broadcastd_epi32(__m128i); extern __m256i _mm256_broadcastq_epi64(__m128i); extern __m256i _mm256_broadcastsi128_si256(__m128i); extern __m256i _mm256_cvtepi8_epi16(__m128i); extern __m256i _mm256_cvtepi8_epi32(__m128i); extern __m256i _mm256_cvtepi8_epi64(__m128i); extern __m256i _mm256_cvtepi16_epi32(__m128i); extern __m256i _mm256_cvtepi16_epi64(__m128i); extern __m256i _mm256_cvtepi32_epi64(__m128i); extern __m256i _mm256_cvtepu8_epi16(__m128i); extern __m256i _mm256_cvtepu8_epi32(__m128i); extern __m256i _mm256_cvtepu8_epi64(__m128i); extern __m256i _mm256_cvtepu16_epi32(__m128i); extern __m256i _mm256_cvtepu16_epi64(__m128i); extern __m256i _mm256_cvtepu32_epi64(__m128i); extern int _mm256_movemask_epi8(__m256i); extern __m128i _mm_maskload_epi32(int const *, __m128i); extern __m128i _mm_maskload_epi64(__int64 const *, __m128i); extern void _mm_maskstore_epi32(int *, __m128i, __m128i); extern void _mm_maskstore_epi64(__int64 *, __m128i, __m128i); extern __m256i _mm256_maskload_epi32(int const *, __m256i); extern __m256i _mm256_maskload_epi64(__int64 const *, __m256i); extern void _mm256_maskstore_epi32(int *, __m256i, __m256i); extern void _mm256_maskstore_epi64(__int64 *, __m256i, __m256i); extern __m256i _mm256_permutevar8x32_epi32(__m256i, __m256i); extern __m256 _mm256_permutevar8x32_ps(__m256, __m256i); extern __m256i _mm256_permute4x64_epi64(__m256i, const int); extern __m256d _mm256_permute4x64_pd(__m256d, const int); extern __m256i _mm256_permute2x128_si256(__m256i, __m256i, const int); extern __m256i _mm256_stream_load_si256(__m256i const *); extern __m256d _mm256_mask_i32gather_pd(__m256d, double const *, __m128i, __m256d, const int); extern __m256 _mm256_mask_i32gather_ps(__m256, float const *, __m256i, __m256, const int); extern __m256d _mm256_mask_i64gather_pd(__m256d, double const *, __m256i, __m256d, const int); extern __m128 _mm256_mask_i64gather_ps(__m128, float const *, __m256i, __m128, const int); extern __m128d _mm_mask_i32gather_pd(__m128d, double const *, __m128i, __m128d, const int); extern __m128 _mm_mask_i32gather_ps(__m128, float const *, __m128i, __m128, const int); extern __m128d _mm_mask_i64gather_pd(__m128d, double const *, __m128i, __m128d, const int); extern __m128 _mm_mask_i64gather_ps(__m128, float const *, __m128i, __m128, const int); extern __m256i _mm256_mask_i32gather_epi32(__m256i, int const *, __m256i, __m256i, const int); extern __m256i _mm256_mask_i32gather_epi64(__m256i, __int64 const *, __m128i, __m256i, const int); extern __m128i _mm256_mask_i64gather_epi32(__m128i, int const *, __m256i, __m128i, const int); extern __m256i _mm256_mask_i64gather_epi64(__m256i, __int64 const *, __m256i, __m256i, const int); extern __m128i _mm_mask_i32gather_epi32(__m128i, int const *, __m128i, __m128i, const int); extern __m128i _mm_mask_i32gather_epi64(__m128i, __int64 const *, __m128i, __m128i, const int); extern __m128i _mm_mask_i64gather_epi32(__m128i, int const *, __m128i, __m128i, const int); extern __m128i _mm_mask_i64gather_epi64(__m128i, __int64 const *, __m128i, __m128i, const int); extern __m256d _mm256_i32gather_pd(double const *, __m128i, const int); extern __m256 _mm256_i32gather_ps(float const *, __m256i, const int); extern __m256d _mm256_i64gather_pd(double const *, __m256i, const int); extern __m128 _mm256_i64gather_ps(float const *, __m256i, const int); extern __m128d _mm_i32gather_pd(double const *, __m128i, const int); extern __m128 _mm_i32gather_ps(float const *, __m128i, const int); extern __m128d _mm_i64gather_pd(double const *, __m128i, const int); extern __m128 _mm_i64gather_ps(float const *, __m128i, const int); extern __m256i _mm256_i32gather_epi32(int const *, __m256i, const int); extern __m256i _mm256_i32gather_epi64(__int64 const *, __m128i, const int); extern __m128i _mm256_i64gather_epi32(int const *, __m256i, const int); extern __m256i _mm256_i64gather_epi64(__int64 const *, __m256i, const int); extern __m128i _mm_i32gather_epi32(int const *, __m128i, const int); extern __m128i _mm_i32gather_epi64(__int64 const *, __m128i, const int); extern __m128i _mm_i64gather_epi32(int const *, __m128i, const int); extern __m128i _mm_i64gather_epi64(__int64 const *, __m128i, const int); extern unsigned int _bextr_u32(unsigned int, unsigned int, unsigned int); extern unsigned int _blsi_u32(unsigned int); extern unsigned int _blsmsk_u32(unsigned int); extern unsigned int _blsr_u32(unsigned int); extern unsigned int _bzhi_u32(unsigned int, unsigned int); extern unsigned int _pext_u32(unsigned int, unsigned int); extern unsigned int _pdep_u32(unsigned int, unsigned int); extern unsigned __int64 _bextr_u64(unsigned __int64, unsigned int, unsigned int); extern unsigned __int64 _blsi_u64(unsigned __int64); extern unsigned __int64 _blsmsk_u64(unsigned __int64); extern unsigned __int64 _blsr_u64(unsigned __int64); extern unsigned __int64 _bzhi_u64(unsigned __int64, unsigned int); extern unsigned __int64 _pext_u64(unsigned __int64, unsigned __int64); extern unsigned __int64 _pdep_u64(unsigned __int64, unsigned __int64); extern unsigned int _lzcnt_u32(unsigned int); extern unsigned __int64 _lzcnt_u64(unsigned __int64); extern unsigned int _tzcnt_u32(unsigned int); extern unsigned __int64 _tzcnt_u64(unsigned __int64); extern void _invpcid(unsigned int , void * ); # 2208 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 3 extern unsigned int _xbegin(void); extern void _xend(void); extern void _xabort(const unsigned int); extern unsigned char _xtest(void); extern int _rdseed16_step(unsigned short *); extern int _rdseed32_step(unsigned int *); extern int _rdseed64_step(unsigned __int64 *); extern unsigned char _addcarry_u32(unsigned char , unsigned int , unsigned int , unsigned int * ); extern unsigned char _addcarry_u64(unsigned char , unsigned __int64 , unsigned __int64 , unsigned __int64 * ); extern unsigned char _subborrow_u32(unsigned char , unsigned int , unsigned int , unsigned int * ); extern unsigned char _subborrow_u64(unsigned char , unsigned __int64 , unsigned __int64 , unsigned __int64 * ); extern unsigned char _addcarryx_u32(unsigned char , unsigned int , unsigned int , unsigned int * ); extern unsigned char _addcarryx_u64(unsigned char , unsigned __int64 , unsigned __int64 , unsigned __int64 * ); extern __m128i _mm_loadu_si16(void const*); extern __m128i _mm_loadu_si32(void const*); extern __m128i _mm_loadu_si64(void const*); extern void _mm_storeu_si16(void*, __m128i); extern void _mm_storeu_si32(void*, __m128i); extern void _mm_storeu_si64(void*, __m128i); extern __m128i _mm_sha1msg1_epu32(__m128i, __m128i); extern __m128i _mm_sha1msg2_epu32(__m128i, __m128i); extern __m128i _mm_sha1nexte_epu32(__m128i, __m128i); extern __m128i _mm_sha1rnds4_epu32(__m128i, __m128i, const int); extern __m128i _mm_sha256msg1_epu32(__m128i, __m128i); extern __m128i _mm_sha256msg2_epu32(__m128i, __m128i); extern __m128i _mm_sha256rnds2_epu32(__m128i, __m128i, __m128i); extern void * _bnd_set_ptr_bounds(const void *, size_t); extern void * _bnd_narrow_ptr_bounds(const void *, const void *, size_t); extern void * _bnd_copy_ptr_bounds(const void *, const void *); extern void * _bnd_init_ptr_bounds(const void *); extern void _bnd_store_ptr_bounds(const void **, const void *); extern void _bnd_chk_ptr_lbounds(const void *); extern void _bnd_chk_ptr_ubounds(const void *); extern void _bnd_chk_ptr_bounds(const void *, size_t); extern const void * _bnd_get_ptr_lbound(const void *); extern const void * _bnd_get_ptr_ubound(const void *); } # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 1 3 typedef unsigned char __mmask8; typedef unsigned short __mmask16; typedef __mmask16 __mmask; typedef union __declspec(align(64)) __declspec(intrin_type) __m512 { float __m512_f32[16]; } __m512; typedef union __declspec(align(64)) __declspec(intrin_type) __m512d { double __m512d_f64[8]; } __m512d; typedef union __declspec(align(64)) __declspec(intrin_type) __m512i { int __m512i_i32[16]; } __m512i; extern "C" { extern __m512 _mm512_castpd_ps(__m512d); extern __m512i _mm512_castpd_si512(__m512d); extern __m512d _mm512_castps_pd(__m512); extern __m512i _mm512_castps_si512(__m512); extern __m512 _mm512_castsi512_ps(__m512i); extern __m512d _mm512_castsi512_pd(__m512i); typedef enum { _MM_SWIZ_REG_NONE, _MM_SWIZ_REG_CDAB, _MM_SWIZ_REG_BADC, _MM_SWIZ_REG_AAAA, _MM_SWIZ_REG_BBBB, _MM_SWIZ_REG_CCCC, _MM_SWIZ_REG_DDDD, _MM_SWIZ_REG_DACB } _MM_SWIZZLE_ENUM; typedef enum { _MM_BROADCAST32_NONE, _MM_BROADCAST_1X16, _MM_BROADCAST_4X16 } _MM_BROADCAST32_ENUM; typedef enum { _MM_BROADCAST64_NONE, _MM_BROADCAST_1X8, _MM_BROADCAST_4X8 } _MM_BROADCAST64_ENUM; typedef enum { _MM_ROUND_MODE_NEAREST, _MM_ROUND_MODE_DOWN, _MM_ROUND_MODE_UP, _MM_ROUND_MODE_TOWARD_ZERO, _MM_ROUND_MODE_DEFAULT } _MM_ROUND_MODE_ENUM; typedef enum { _MM_EXPADJ_NONE, _MM_EXPADJ_4, _MM_EXPADJ_5, _MM_EXPADJ_8, _MM_EXPADJ_16, _MM_EXPADJ_24, _MM_EXPADJ_31, _MM_EXPADJ_32 } _MM_EXP_ADJ_ENUM; typedef enum { _MM_SCALE_1 = 1, _MM_SCALE_2 = 2, _MM_SCALE_4 = 4, _MM_SCALE_8 = 8 } _MM_INDEX_SCALE_ENUM; typedef enum { _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02, _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05, _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08, _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B, _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E, _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11, _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14, _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17, _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A, _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D, _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20, _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23, _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26, _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29, _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C, _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F, _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32, _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35, _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38, _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B, _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E, _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41, _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44, _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47, _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A, _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D, _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50, _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53, _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56, _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59, _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C, _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F, _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62, _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65, _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68, _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B, _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E, _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71, _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74, _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77, _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A, _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D, _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80, _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83, _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86, _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89, _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C, _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F, _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92, _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95, _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98, _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B, _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E, _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1, _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4, _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7, _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA, _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD, _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0, _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3, _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6, _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9, _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC, _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF, _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2, _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5, _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8, _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB, _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE, _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1, _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4, _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7, _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA, _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD, _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0, _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3, _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6, _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9, _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC, _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF, _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2, _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5, _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8, _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB, _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE, _MM_PERM_DDDD = 0xFF } _MM_PERM_ENUM; typedef enum { _MM_FIXUP_NO_CHANGE, _MM_FIXUP_NEG_INF, _MM_FIXUP_NEG_ZERO, _MM_FIXUP_POS_ZERO, _MM_FIXUP_POS_INF, _MM_FIXUP_NAN, _MM_FIXUP_MAX_FLOAT, _MM_FIXUP_MIN_FLOAT } _MM_FIXUPRESULT_ENUM; # 271 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_mask_mov_ps(__m512, __mmask16, __m512); extern __m512d _mm512_mask_mov_pd(__m512d, __mmask8, __m512d); typedef enum { _MM_UPCONV_PS_NONE, _MM_UPCONV_PS_FLOAT16, _MM_UPCONV_PS_UINT8, _MM_UPCONV_PS_SINT8, _MM_UPCONV_PS_UINT16, _MM_UPCONV_PS_SINT16 } _MM_UPCONV_PS_ENUM; extern __m512 _mm512_extload_ps(void const*, _MM_UPCONV_PS_ENUM, _MM_BROADCAST32_ENUM, int ); extern __m512 _mm512_mask_extload_ps(__m512, __mmask16, void const*, _MM_UPCONV_PS_ENUM, _MM_BROADCAST32_ENUM, int ); extern __m512 _mm512_load_ps(void const*); extern __m512 _mm512_mask_load_ps(__m512, __mmask16, void const*); typedef enum { _MM_UPCONV_EPI32_NONE, _MM_UPCONV_EPI32_UINT8, _MM_UPCONV_EPI32_SINT8, _MM_UPCONV_EPI32_UINT16, _MM_UPCONV_EPI32_SINT16 } _MM_UPCONV_EPI32_ENUM; extern __m512i _mm512_extload_epi32(void const*, _MM_UPCONV_EPI32_ENUM, _MM_BROADCAST32_ENUM, int ); extern __m512i _mm512_mask_extload_epi32(__m512i, __mmask16, void const*, _MM_UPCONV_EPI32_ENUM, _MM_BROADCAST32_ENUM, int ); extern __m512i _mm512_load_epi32(void const*); extern __m512i _mm512_mask_load_epi32(__m512i, __mmask16, void const*); typedef enum { _MM_UPCONV_PD_NONE } _MM_UPCONV_PD_ENUM; extern __m512d _mm512_extload_pd(void const*, _MM_UPCONV_PD_ENUM, _MM_BROADCAST64_ENUM, int ); extern __m512d _mm512_mask_extload_pd(__m512d, __mmask8, void const*, _MM_UPCONV_PD_ENUM, _MM_BROADCAST64_ENUM, int ); extern __m512d _mm512_load_pd(void const*); extern __m512d _mm512_mask_load_pd(__m512d, __mmask8, void const*); typedef enum { _MM_UPCONV_EPI64_NONE } _MM_UPCONV_EPI64_ENUM; extern __m512i _mm512_extload_epi64(void const*, _MM_UPCONV_EPI64_ENUM, _MM_BROADCAST64_ENUM, int ); extern __m512i _mm512_mask_extload_epi64(__m512i, __mmask8, void const*, _MM_UPCONV_EPI64_ENUM, _MM_BROADCAST64_ENUM, int ); extern __m512i _mm512_load_epi64(void const*); extern __m512i _mm512_mask_load_epi64(__m512i, __mmask8, void const*); extern __m512 _mm512_swizzle_ps(__m512, _MM_SWIZZLE_ENUM); extern __m512d _mm512_swizzle_pd(__m512d, _MM_SWIZZLE_ENUM); extern __m512i _mm512_swizzle_epi32(__m512i, _MM_SWIZZLE_ENUM); extern __m512i _mm512_swizzle_epi64(__m512i, _MM_SWIZZLE_ENUM); extern __m512 _mm512_mask_swizzle_ps(__m512, __mmask16, __m512, _MM_SWIZZLE_ENUM); extern __m512d _mm512_mask_swizzle_pd(__m512d, __mmask8, __m512d, _MM_SWIZZLE_ENUM); extern __m512i _mm512_mask_swizzle_epi32(__m512i, __mmask16, __m512i, _MM_SWIZZLE_ENUM); extern __m512i _mm512_mask_swizzle_epi64(__m512i, __mmask8, __m512i, _MM_SWIZZLE_ENUM); typedef enum { _MM_DOWNCONV_PS_NONE, _MM_DOWNCONV_PS_FLOAT16, _MM_DOWNCONV_PS_UINT8, _MM_DOWNCONV_PS_SINT8, _MM_DOWNCONV_PS_UINT16, _MM_DOWNCONV_PS_SINT16 } _MM_DOWNCONV_PS_ENUM; typedef enum { _MM_DOWNCONV_EPI32_NONE, _MM_DOWNCONV_EPI32_UINT8, _MM_DOWNCONV_EPI32_SINT8, _MM_DOWNCONV_EPI32_UINT16, _MM_DOWNCONV_EPI32_SINT16 } _MM_DOWNCONV_EPI32_ENUM; typedef enum { _MM_DOWNCONV_PD_NONE } _MM_DOWNCONV_PD_ENUM; typedef enum { _MM_DOWNCONV_EPI64_NONE } _MM_DOWNCONV_EPI64_ENUM; extern void _mm512_extstore_ps(void*, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_extstore_epi32(void*, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_extstore_pd(void*, __m512d, _MM_DOWNCONV_PD_ENUM, int ); extern void _mm512_extstore_epi64(void*, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_mask_extstore_ps(void*, __mmask16, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_mask_extstore_pd(void*, __mmask8, __m512d, _MM_DOWNCONV_PD_ENUM, int ); extern void _mm512_mask_extstore_epi32(void*, __mmask16, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_mask_extstore_epi64(void*, __mmask8, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_store_ps(void*, __m512); extern void _mm512_store_epi32(void*, __m512i); extern void _mm512_store_pd(void*, __m512d); extern void _mm512_store_epi64(void*, __m512i); extern void _mm512_mask_store_ps(void*, __mmask16, __m512); extern void _mm512_mask_store_pd(void*, __mmask8, __m512d); extern void _mm512_mask_store_epi32(void*, __mmask16, __m512i); extern void _mm512_mask_store_epi64(void*, __mmask8, __m512i); extern void _mm512_storenr_ps(void*, __m512); extern void _mm512_storenr_pd(void*, __m512d); extern void _mm512_storenrngo_ps(void*, __m512); extern void _mm512_storenrngo_pd(void*, __m512d); extern __m512 _mm512_abs_ps(__m512); extern __m512 _mm512_mask_abs_ps(__m512, __mmask16, __m512); extern __m512d _mm512_abs_pd(__m512d); extern __m512d _mm512_mask_abs_pd(__m512d, __mmask8, __m512d); extern __m512i _mm512_adc_epi32(__m512i, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_mask_adc_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512d _mm512_addn_pd(__m512d, __m512d); extern __m512d _mm512_mask_addn_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_addn_ps(__m512, __m512); extern __m512 _mm512_mask_addn_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_addn_round_pd(__m512d, __m512d, int ); extern __m512d _mm512_mask_addn_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512 _mm512_addn_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_addn_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512d _mm512_add_pd(__m512d, __m512d); extern __m512d _mm512_mask_add_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_add_ps(__m512, __m512); extern __m512 _mm512_mask_add_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_mul_pd(__m512d, __m512d); extern __m512d _mm512_mask_mul_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_mul_ps(__m512, __m512); extern __m512 _mm512_mask_mul_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_sub_pd(__m512d, __m512d); extern __m512d _mm512_mask_sub_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_sub_ps(__m512, __m512); extern __m512 _mm512_mask_sub_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_subr_pd(__m512d, __m512d); extern __m512d _mm512_mask_subr_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_subr_ps(__m512,__m512); extern __m512 _mm512_mask_subr_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_add_round_pd(__m512d, __m512d, int ); extern __m512d _mm512_mask_add_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512 _mm512_add_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_add_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512i _mm512_add_epi32(__m512i, __m512i); extern __m512i _mm512_mask_add_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_add_epi64(__m512i, __m512i); extern __m512i _mm512_mask_add_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512d _mm512_mul_round_pd(__m512d, __m512d, int ); extern __m512d _mm512_mask_mul_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512 _mm512_mul_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_mul_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512d _mm512_sub_round_pd(__m512d, __m512d, int ); extern __m512d _mm512_mask_sub_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512 _mm512_sub_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_sub_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512i _mm512_sub_epi32(__m512i, __m512i); extern __m512i _mm512_mask_sub_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512d _mm512_subr_round_pd(__m512d, __m512d, int ); extern __m512d _mm512_mask_subr_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512 _mm512_subr_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_subr_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512i _mm512_subr_epi32(__m512i, __m512i); extern __m512i _mm512_mask_subr_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_addsetc_epi32(__m512i, __m512i, __mmask16*); extern __m512i _mm512_mask_addsetc_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_addsets_epi32(__m512i, __m512i, __mmask16*); extern __m512i _mm512_mask_addsets_epi32(__m512i, __mmask16, __m512i, __m512i, __mmask16*); extern __m512 _mm512_addsets_ps(__m512, __m512, __mmask16*); extern __m512 _mm512_mask_addsets_ps(__m512, __mmask16, __m512, __m512, __mmask16*); extern __m512 _mm512_addsets_round_ps(__m512, __m512, __mmask16*, int ); extern __m512 _mm512_mask_addsets_round_ps(__m512, __mmask16, __m512, __m512, __mmask16*, int ); extern __m512i _mm512_alignr_epi32(__m512i, __m512i, const int ); extern __m512i _mm512_mask_alignr_epi32(__m512i, __mmask16, __m512i, __m512i, const int ); extern __m512i _mm512_mask_blend_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_mask_blend_epi64(__mmask8, __m512i, __m512i); extern __m512 _mm512_mask_blend_ps(__mmask16, __m512, __m512); extern __m512d _mm512_mask_blend_pd(__mmask8, __m512d, __m512d); extern __m512i _mm512_subsetb_epi32(__m512i, __m512i, __mmask16*); extern __m512i _mm512_mask_subsetb_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_subrsetb_epi32(__m512i, __m512i, __mmask16*); extern __m512i _mm512_mask_subrsetb_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_sbb_epi32(__m512i, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_mask_sbb_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_sbbr_epi32(__m512i, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_mask_sbbr_epi32(__m512i, __mmask16, __mmask16, __m512i, __mmask16*); extern __m512i _mm512_and_epi32(__m512i, __m512i); extern __m512i _mm512_mask_and_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_and_epi64(__m512i, __m512i); extern __m512i _mm512_mask_and_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_andnot_epi32(__m512i, __m512i); extern __m512i _mm512_mask_andnot_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_andnot_epi64(__m512i, __m512i); extern __m512i _mm512_mask_andnot_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_or_epi32(__m512i, __m512i); extern __m512i _mm512_mask_or_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_or_epi64(__m512i, __m512i); extern __m512i _mm512_mask_or_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_xor_epi32(__m512i, __m512i); extern __m512i _mm512_mask_xor_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_xor_epi64(__m512i, __m512i); extern __m512i _mm512_mask_xor_epi64(__m512i, __mmask8, __m512i, __m512i); typedef enum { _MM_CMPINT_EQ, _MM_CMPINT_LT, _MM_CMPINT_LE, _MM_CMPINT_UNUSED, _MM_CMPINT_NE, _MM_CMPINT_NLT, _MM_CMPINT_NLE } _MM_CMPINT_ENUM; extern __mmask16 _mm512_cmp_epi32_mask(__m512i, __m512i, const _MM_CMPINT_ENUM); extern __mmask16 _mm512_mask_cmp_epi32_mask(__mmask16, __m512i, __m512i, const _MM_CMPINT_ENUM); # 819 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __mmask16 _mm512_cmp_epu32_mask(__m512i, __m512i, const _MM_CMPINT_ENUM); extern __mmask16 _mm512_mask_cmp_epu32_mask(__mmask16, __m512i, __m512i, const _MM_CMPINT_ENUM); # 850 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __mmask8 _mm512_cmp_pd_mask(__m512d, __m512d, const int); extern __mmask8 _mm512_mask_cmp_pd_mask(__mmask8, __m512d, __m512d, const int); # 885 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __mmask16 _mm512_cmp_ps_mask(__m512, __m512, const int); extern __mmask16 _mm512_mask_cmp_ps_mask(__mmask16, __m512, __m512, const int); # 919 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_cvt_roundpd_pslo(__m512d, int); extern __m512 _mm512_mask_cvt_roundpd_pslo(__m512, __mmask8, __m512d, int); extern __m512i _mm512_cvtfxpnt_roundpd_epi32lo(__m512d, int); extern __m512i _mm512_mask_cvtfxpnt_roundpd_epi32lo(__m512i, __mmask8, __m512d, int); extern __m512i _mm512_cvtfxpnt_roundpd_epu32lo(__m512d, int); extern __m512i _mm512_mask_cvtfxpnt_roundpd_epu32lo(__m512i, __mmask8, __m512d, int); extern __m512d _mm512_cvtpslo_pd(__m512); extern __m512d _mm512_mask_cvtpslo_pd(__m512d, __mmask8, __m512); extern __m512i _mm512_cvtfxpnt_round_adjustps_epi32(__m512, int , _MM_EXP_ADJ_ENUM); extern __m512i _mm512_mask_cvtfxpnt_round_adjustps_epi32( __m512i, __mmask16, __m512, int , _MM_EXP_ADJ_ENUM); extern __m512i _mm512_cvtfxpnt_round_adjustps_epu32(__m512, int , _MM_EXP_ADJ_ENUM); extern __m512i _mm512_mask_cvtfxpnt_round_adjustps_epu32( __m512i, __mmask16, __m512, int , _MM_EXP_ADJ_ENUM); extern __m512d _mm512_cvtepi32lo_pd(__m512i); extern __m512d _mm512_mask_cvtepi32lo_pd(__m512d, __mmask8, __m512i); extern __m512d _mm512_cvtepu32lo_pd(__m512i); extern __m512d _mm512_mask_cvtepu32lo_pd(__m512d, __mmask8, __m512i); extern __m512 _mm512_cvtfxpnt_round_adjustepi32_ps(__m512i, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_mask_cvtfxpnt_round_adjustepi32_ps( __m512, __mmask16, __m512i, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_cvtfxpnt_round_adjustepu32_ps(__m512i, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_mask_cvtfxpnt_round_adjustepu32_ps(__m512, __mmask16, __m512i, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_exp223_ps(__m512i); extern __m512 _mm512_mask_exp223_ps(__m512, __mmask16, __m512i); extern __m512d _mm512_fixupnan_pd(__m512d, __m512d, __m512i); extern __m512d _mm512_mask_fixupnan_pd(__m512d, __mmask8, __m512d, __m512i); extern __m512 _mm512_fixupnan_ps(__m512, __m512, __m512i); extern __m512 _mm512_mask_fixupnan_ps(__m512, __mmask16, __m512, __m512i); extern __m512i _mm512_i32extgather_epi32(__m512i, void const*, _MM_UPCONV_EPI32_ENUM, int, int ); extern __m512i _mm512_mask_i32extgather_epi32(__m512i, __mmask16, __m512i , void const*, _MM_UPCONV_EPI32_ENUM, int, int ); extern __m512i _mm512_i32loextgather_epi64(__m512i, void const*, _MM_UPCONV_EPI64_ENUM, int, int ); extern __m512i _mm512_mask_i32loextgather_epi64(__m512i, __mmask8, __m512i, void const*, _MM_UPCONV_EPI64_ENUM, int, int ); extern __m512 _mm512_i32extgather_ps(__m512i, void const*, _MM_UPCONV_PS_ENUM, int, int ); extern __m512 _mm512_mask_i32extgather_ps(__m512, __mmask16, __m512i, void const*, _MM_UPCONV_PS_ENUM, int, int ); extern __m512d _mm512_i32loextgather_pd(__m512i, void const*, _MM_UPCONV_PD_ENUM, int, int ); extern __m512d _mm512_mask_i32loextgather_pd(__m512d, __mmask8, __m512i, void const*, _MM_UPCONV_PD_ENUM, int, int ); extern __m512i _mm512_i64extgather_epi32lo(__m512i, void const*, _MM_UPCONV_EPI32_ENUM, int, int ); extern __m512i _mm512_mask_i64extgather_epi32lo(__m512i, __mmask8, __m512i , void const*, _MM_UPCONV_EPI32_ENUM, int, int ); extern __m512i _mm512_i64extgather_epi64(__m512i, void const*, _MM_UPCONV_EPI64_ENUM, int, int ); extern __m512i _mm512_mask_i64extgather_epi64(__m512i, __mmask8, __m512i, void const*, _MM_UPCONV_EPI64_ENUM, int, int ); extern __m512 _mm512_i64extgather_pslo(__m512i, void const*, _MM_UPCONV_PS_ENUM, int, int ); extern __m512 _mm512_mask_i64extgather_pslo(__m512, __mmask8, __m512i, void const*, _MM_UPCONV_PS_ENUM, int, int ); extern __m512d _mm512_i64extgather_pd(__m512i, void const*, _MM_UPCONV_PD_ENUM, int, int ); extern __m512d _mm512_mask_i64extgather_pd(__m512d, __mmask8, __m512i, void const*, _MM_UPCONV_PD_ENUM, int, int ); extern void _mm512_prefetch_i32extgather_ps(__m512i, void const*, _MM_UPCONV_PS_ENUM, int , int ); extern void _mm512_mask_prefetch_i32extgather_ps( __m512i , __mmask16, void const*, _MM_UPCONV_PS_ENUM, int , int ); extern void _mm512_i32extscatter_ps(void*, __m512i, __m512, _MM_DOWNCONV_PS_ENUM, int , int ); extern void _mm512_mask_i32extscatter_ps(void*, __mmask16, __m512i, __m512, _MM_DOWNCONV_PS_ENUM, int , int ); extern void _mm512_i32loextscatter_pd(void*, __m512i, __m512d, _MM_DOWNCONV_PD_ENUM, int , int ); extern void _mm512_mask_i32loextscatter_pd(void*, __mmask8, __m512i, __m512d, _MM_DOWNCONV_PD_ENUM, int , int ); extern void _mm512_i32extscatter_epi32(void*, __m512i, __m512i, _MM_DOWNCONV_EPI32_ENUM, int , int ); extern void _mm512_mask_i32extscatter_epi32(void*, __mmask16, __m512i, __m512i, _MM_DOWNCONV_EPI32_ENUM, int , int ); extern void _mm512_i32loextscatter_epi64(void*, __m512i, __m512i, _MM_DOWNCONV_EPI64_ENUM, int , int ); extern void _mm512_mask_i32loextscatter_epi64(void*, __mmask8, __m512i, __m512i, _MM_DOWNCONV_EPI64_ENUM, int , int ); extern void _mm512_i64extscatter_pslo(void*, __m512i, __m512, _MM_DOWNCONV_PS_ENUM, int , int ); extern void _mm512_mask_i64extscatter_pslo(void*, __mmask8, __m512i, __m512, _MM_DOWNCONV_PS_ENUM, int , int ); extern void _mm512_i64extscatter_pd(void*, __m512i, __m512d, _MM_DOWNCONV_PD_ENUM, int , int ); extern void _mm512_mask_i64extscatter_pd(void*, __mmask8, __m512i, __m512d, _MM_DOWNCONV_PD_ENUM, int , int ); extern void _mm512_i64extscatter_epi32lo(void*, __m512i, __m512i, _MM_DOWNCONV_EPI32_ENUM, int , int ); extern void _mm512_mask_i64extscatter_epi32lo(void*, __mmask8, __m512i, __m512i, _MM_DOWNCONV_EPI32_ENUM, int , int ); extern void _mm512_i64extscatter_epi64(void*, __m512i, __m512i, _MM_DOWNCONV_EPI64_ENUM, int , int ); extern void _mm512_mask_i64extscatter_epi64(void*, __mmask8, __m512i, __m512i, _MM_DOWNCONV_EPI64_ENUM, int , int ); extern void _mm512_prefetch_i32extscatter_ps(void*, __m512i, _MM_UPCONV_PS_ENUM, int , int ); extern void _mm512_mask_prefetch_i32extscatter_ps(void*, __mmask16, __m512i, _MM_UPCONV_PS_ENUM, int , int ); extern __m512 _mm512_getexp_ps(__m512); extern __m512 _mm512_mask_getexp_ps(__m512, __mmask16, __m512); extern __m512d _mm512_getexp_pd(__m512d); extern __m512d _mm512_mask_getexp_pd(__m512d, __mmask8, __m512d); typedef enum { _MM_MANT_NORM_1_2, _MM_MANT_NORM_p5_2, _MM_MANT_NORM_p5_1, _MM_MANT_NORM_p75_1p5 } _MM_MANTISSA_NORM_ENUM; typedef enum { _MM_MANT_SIGN_src, _MM_MANT_SIGN_zero, _MM_MANT_SIGN_nan } _MM_MANTISSA_SIGN_ENUM; extern __m512d _mm512_getmant_pd(__m512d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM); extern __m512d _mm512_mask_getmant_pd(__m512d, __mmask8, __m512d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM); extern __m512 _mm512_getmant_ps(__m512, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM); extern __m512 _mm512_mask_getmant_ps(__m512, __mmask16, __m512, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM); extern __m512i _mm512_extloadunpackhi_epi32(__m512i, void const*, _MM_UPCONV_EPI32_ENUM, int ); extern __m512i _mm512_mask_extloadunpackhi_epi32(__m512i, __mmask16, void const*, _MM_UPCONV_EPI32_ENUM, int ); extern __m512i _mm512_extloadunpacklo_epi32(__m512i, void const*, _MM_UPCONV_EPI32_ENUM, int ); extern __m512i _mm512_mask_extloadunpacklo_epi32(__m512i, __mmask16, void const*, _MM_UPCONV_EPI32_ENUM, int ); extern __m512i _mm512_extloadunpackhi_epi64(__m512i, void const*, _MM_UPCONV_EPI64_ENUM, int ); extern __m512i _mm512_mask_extloadunpackhi_epi64(__m512i, __mmask8, void const*, _MM_UPCONV_EPI64_ENUM, int ); extern __m512i _mm512_extloadunpacklo_epi64(__m512i, void const*, _MM_UPCONV_EPI64_ENUM, int ); extern __m512i _mm512_mask_extloadunpacklo_epi64(__m512i, __mmask8, void const*, _MM_UPCONV_EPI64_ENUM, int ); extern __m512 _mm512_extloadunpackhi_ps(__m512, void const*, _MM_UPCONV_PS_ENUM, int ); extern __m512 _mm512_mask_extloadunpackhi_ps(__m512, __mmask16, void const*, _MM_UPCONV_PS_ENUM, int ); extern __m512 _mm512_extloadunpacklo_ps(__m512, void const*, _MM_UPCONV_PS_ENUM, int ); extern __m512 _mm512_mask_extloadunpacklo_ps(__m512, __mmask16, void const*, _MM_UPCONV_PS_ENUM, int ); extern __m512d _mm512_extloadunpackhi_pd(__m512d, void const*, _MM_UPCONV_PD_ENUM, int ); extern __m512d _mm512_mask_extloadunpackhi_pd(__m512d, __mmask8, void const*, _MM_UPCONV_PD_ENUM, int ); extern __m512d _mm512_extloadunpacklo_pd(__m512d, void const*, _MM_UPCONV_PD_ENUM, int ); extern __m512d _mm512_mask_extloadunpacklo_pd(__m512d, __mmask8, void const*, _MM_UPCONV_PD_ENUM, int ); # 1538 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1545 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1552 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1559 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1566 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1573 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1580 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1587 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern void _mm512_extpackstorehi_epi32(void*, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_mask_extpackstorehi_epi32(void*, __mmask16, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_extpackstorelo_epi32(void*, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_mask_extpackstorelo_epi32(void*, __mmask16, __m512i, _MM_DOWNCONV_EPI32_ENUM, int ); extern void _mm512_extpackstorehi_epi64(void*, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_mask_extpackstorehi_epi64(void*, __mmask8, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_extpackstorelo_epi64(void*, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_mask_extpackstorelo_epi64(void*, __mmask8, __m512i, _MM_DOWNCONV_EPI64_ENUM, int ); extern void _mm512_extpackstorehi_ps(void*, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_mask_extpackstorehi_ps(void*, __mmask16, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_extpackstorelo_ps(void*, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_mask_extpackstorelo_ps(void*, __mmask16, __m512, _MM_DOWNCONV_PS_ENUM, int ); extern void _mm512_extpackstorehi_pd(void*, __m512d, _MM_DOWNCONV_PD_ENUM, int ); extern void _mm512_mask_extpackstorehi_pd(void*, __mmask8, __m512d, _MM_DOWNCONV_PD_ENUM, int ); extern void _mm512_extpackstorelo_pd(void*, __m512d, _MM_DOWNCONV_PD_ENUM, int ); extern void _mm512_mask_extpackstorelo_pd(void*, __mmask8, __m512d, _MM_DOWNCONV_PD_ENUM, int ); # 1659 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 # 1666 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_log2ae23_ps(__m512); extern __m512 _mm512_mask_log2ae23_ps(__m512, __mmask16, __m512); extern __m512 _mm512_fmadd_round_ps(__m512, __m512, __m512, int ); extern __m512 _mm512_mask_fmadd_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512 _mm512_mask3_fmadd_round_ps(__m512, __m512, __m512, __mmask16, int ); extern __m512d _mm512_fmadd_round_pd(__m512d, __m512d, __m512d, int ); extern __m512d _mm512_mask_fmadd_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512d _mm512_mask3_fmadd_round_pd(__m512d, __m512d, __m512d, __mmask8, int ); extern __m512i _mm512_fmadd_epi32(__m512i, __m512i, __m512i); extern __m512i _mm512_mask_fmadd_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_mask3_fmadd_epi32(__m512i, __m512i, __m512i, __mmask16); extern __m512 _mm512_fmsub_round_ps(__m512, __m512, __m512, int ); extern __m512 _mm512_mask_fmsub_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512 _mm512_mask3_fmsub_round_ps(__m512, __m512, __m512, __mmask16, int ); extern __m512d _mm512_fmsub_round_pd(__m512d, __m512d, __m512d, int ); extern __m512d _mm512_mask_fmsub_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512d _mm512_mask3_fmsub_round_pd(__m512d, __m512d, __m512d, __mmask8, int ); extern __m512 _mm512_fnmadd_round_ps(__m512, __m512, __m512, int ); extern __m512 _mm512_mask_fnmadd_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512 _mm512_mask3_fnmadd_round_ps(__m512, __m512, __m512, __mmask16, int ); extern __m512d _mm512_fnmadd_round_pd(__m512d, __m512d, __m512d, int ); extern __m512d _mm512_mask_fnmadd_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512d _mm512_mask3_fnmadd_round_pd(__m512d, __m512d, __m512d, __mmask8, int ); extern __m512 _mm512_fnmsub_round_ps(__m512, __m512, __m512, int ); extern __m512 _mm512_mask_fnmsub_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512 _mm512_mask3_fnmsub_round_ps(__m512, __m512, __m512, __mmask16, int ); extern __m512d _mm512_fnmsub_round_pd(__m512d, __m512d, __m512d, int ); extern __m512d _mm512_mask_fnmsub_round_pd(__m512d, __mmask8, __m512d, __m512d, int ); extern __m512d _mm512_mask3_fnmsub_round_pd(__m512d, __m512d, __m512d, __mmask8, int ); extern __m512i _mm512_fmadd233_epi32(__m512i, __m512i); extern __m512i _mm512_mask_fmadd233_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512 _mm512_fmadd233_round_ps(__m512, __m512, int ); extern __m512 _mm512_mask_fmadd233_round_ps(__m512, __mmask16, __m512, __m512, int ); extern __m512 _mm512_max_ps(__m512, __m512); extern __m512 _mm512_mask_max_ps(__m512, __mmask16, __m512, __m512); extern __m512 _mm512_maxabs_ps(__m512, __m512); extern __m512 _mm512_mask_maxabs_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_max_pd(__m512d, __m512d); extern __m512d _mm512_mask_max_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512i _mm512_max_epi32(__m512i, __m512i); extern __m512i _mm512_mask_max_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_max_epu32(__m512i,__m512i); extern __m512i _mm512_mask_max_epu32(__m512i, __mmask16, __m512i,__m512i); extern __m512 _mm512_min_ps(__m512, __m512); extern __m512 _mm512_mask_min_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_min_pd(__m512d,__m512d); extern __m512d _mm512_mask_min_pd(__m512d, __mmask8, __m512d,__m512d); extern __m512i _mm512_min_epi32(__m512i, __m512i); extern __m512i _mm512_mask_min_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_min_epu32(__m512i, __m512i); extern __m512i _mm512_mask_min_epu32(__m512i, __mmask16, __m512i, __m512i); extern __m512 _mm512_gmax_ps(__m512, __m512); extern __m512 _mm512_mask_gmax_ps(__m512, __mmask16, __m512, __m512); extern __m512 _mm512_gmaxabs_ps(__m512, __m512); extern __m512 _mm512_mask_gmaxabs_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_gmax_pd(__m512d, __m512d); extern __m512d _mm512_mask_gmax_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_gmin_ps(__m512, __m512); extern __m512 _mm512_mask_gmin_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_gmin_pd(__m512d, __m512d); extern __m512d _mm512_mask_gmin_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512i _mm512_mulhi_epi32(__m512i, __m512i); extern __m512i _mm512_mask_mulhi_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_mulhi_epu32(__m512i, __m512i); extern __m512i _mm512_mask_mulhi_epu32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_mullo_epi32(__m512i, __m512i); extern __m512i _mm512_mask_mullo_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_mullox_epi64(__m512i, __m512i); extern __m512i _mm512_mask_mullox_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_permutevar_epi32(__m512i, __m512i); extern __m512i _mm512_mask_permutevar_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_permute4f128_epi32(__m512i, _MM_PERM_ENUM); extern __m512i _mm512_mask_permute4f128_epi32(__m512i, __mmask16, __m512i, _MM_PERM_ENUM); extern __m512 _mm512_permute4f128_ps(__m512, _MM_PERM_ENUM); extern __m512 _mm512_mask_permute4f128_ps(__m512, __mmask16, __m512, _MM_PERM_ENUM); extern __m512 _mm512_rcp23_ps(__m512); extern __m512 _mm512_mask_rcp23_ps(__m512, __mmask16, __m512); extern __m512 _mm512_round_ps(__m512, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_mask_round_ps(__m512, __mmask16, __m512, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_roundfxpnt_adjust_ps(__m512, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_mask_roundfxpnt_adjust_ps(__m512, __mmask16, __m512, int , _MM_EXP_ADJ_ENUM); extern __m512d _mm512_roundfxpnt_adjust_pd(__m512d, int , _MM_EXP_ADJ_ENUM); extern __m512d _mm512_mask_roundfxpnt_adjust_pd(__m512d, __mmask8, __m512d, int , _MM_EXP_ADJ_ENUM); extern __m512 _mm512_rsqrt23_ps(__m512); extern __m512 _mm512_mask_rsqrt23_ps(__m512, __mmask16, __m512); extern __m512 _mm512_scale_ps(__m512, __m512i); extern __m512 _mm512_mask_scale_ps(__m512, __mmask16, __m512, __m512i); extern __m512 _mm512_scale_round_ps(__m512, __m512i, int ); extern __m512 _mm512_mask_scale_round_ps(__m512, __mmask16, __m512, __m512i, int ); extern __m512i _mm512_shuffle_epi32(__m512i, _MM_PERM_ENUM); extern __m512i _mm512_mask_shuffle_epi32(__m512i, __mmask16, __m512i, _MM_PERM_ENUM); extern __m512i _mm512_sllv_epi32(__m512i, __m512i); extern __m512i _mm512_mask_sllv_epi32(__m512i, __mmask16, __m512i,__m512i); extern __m512i _mm512_srav_epi32(__m512i, __m512i); extern __m512i _mm512_mask_srav_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_srlv_epi32(__m512i, __m512i); extern __m512i _mm512_mask_srlv_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_slli_epi32(__m512i, unsigned int ); extern __m512i _mm512_mask_slli_epi32(__m512i, __mmask16, __m512i, unsigned int); extern __m512i _mm512_srai_epi32(__m512i, unsigned int); extern __m512i _mm512_mask_srai_epi32(__m512i, __mmask16, __m512i, unsigned int); extern __m512i _mm512_srli_epi32(__m512i, unsigned int); extern __m512i _mm512_mask_srli_epi32(__m512i, __mmask16, __m512i, unsigned int); extern __mmask16 _mm512_test_epi32_mask(__m512i, __m512i); extern __mmask16 _mm512_mask_test_epi32_mask(__mmask16, __m512i, __m512i); extern __m512 _mm512_undefined(void); extern __m512 _mm512_setzero(void); extern __m512d _mm512_set1_pd(double); extern __m512i _mm512_set1_epi64(__int64); extern __m512 _mm512_set1_ps(float); extern __m512i _mm512_set1_epi32(int); extern __m512d _mm512_set4_pd(double , double , double , double ); extern __m512i _mm512_set4_epi64(__int64 , __int64 , __int64 , __int64 ); # 2252 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_set4_ps(float , float , float , float ); extern __m512i _mm512_set4_epi32(int , int , int , int ); # 2279 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_set_ps(float , float, float, float, float, float, float, float, float, float, float, float, float, float, float, float ); extern __m512i _mm512_set_epi32(int , int, int, int, int, int, int, int, int, int, int, int, int, int, int, int ); extern __m512d _mm512_set_pd(double , double, double, double, double, double, double, double ); extern __m512i _mm512_set_epi64(__int64 , __int64, __int64, __int64, __int64, __int64, __int64, __int64 ); extern __m512d _mm512_acos_pd(__m512d); extern __m512d _mm512_mask_acos_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_acos_ps(__m512); extern __m512 _mm512_mask_acos_ps(__m512, __mmask16, __m512); extern __m512d _mm512_acosh_pd(__m512d); extern __m512d _mm512_mask_acosh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_acosh_ps(__m512); extern __m512 _mm512_mask_acosh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_asin_pd(__m512d); extern __m512d _mm512_mask_asin_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_asin_ps(__m512); extern __m512 _mm512_mask_asin_ps(__m512, __mmask16, __m512); extern __m512d _mm512_asinh_pd(__m512d); extern __m512d _mm512_mask_asinh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_asinh_ps(__m512); extern __m512 _mm512_mask_asinh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_atan2_pd(__m512d, __m512d); extern __m512d _mm512_mask_atan2_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_atan2_ps(__m512, __m512); extern __m512 _mm512_mask_atan2_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_atan_pd(__m512d); extern __m512d _mm512_mask_atan_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_atan_ps(__m512); extern __m512 _mm512_mask_atan_ps(__m512, __mmask16, __m512); extern __m512d _mm512_atanh_pd(__m512d); extern __m512d _mm512_mask_atanh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_atanh_ps(__m512); extern __m512 _mm512_mask_atanh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cbrt_pd(__m512d); extern __m512d _mm512_mask_cbrt_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cbrt_ps(__m512); extern __m512 _mm512_mask_cbrt_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cdfnorm_pd(__m512d); extern __m512d _mm512_mask_cdfnorm_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cdfnorm_ps(__m512); extern __m512 _mm512_mask_cdfnorm_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cdfnorminv_pd(__m512d); extern __m512d _mm512_mask_cdfnorminv_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cdfnorminv_ps(__m512); extern __m512 _mm512_mask_cdfnorminv_ps(__m512, __mmask16, __m512); extern __m512d _mm512_ceil_pd(__m512d); extern __m512d _mm512_mask_ceil_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_ceil_ps(__m512); extern __m512 _mm512_mask_ceil_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cos_pd(__m512d); extern __m512d _mm512_mask_cos_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cos_ps(__m512); extern __m512 _mm512_mask_cos_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cosd_pd(__m512d); extern __m512d _mm512_mask_cosd_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cosd_ps(__m512); extern __m512 _mm512_mask_cosd_ps(__m512, __mmask16, __m512); extern __m512d _mm512_cosh_pd(__m512d); extern __m512d _mm512_mask_cosh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_cosh_ps(__m512); extern __m512 _mm512_mask_cosh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_erf_pd(__m512d); extern __m512d _mm512_mask_erf_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_erfc_pd(__m512d); extern __m512d _mm512_mask_erfc_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_erf_ps(__m512); extern __m512 _mm512_mask_erf_ps(__m512, __mmask16, __m512); extern __m512 _mm512_erfc_ps(__m512); extern __m512 _mm512_mask_erfc_ps(__m512, __mmask16, __m512); extern __m512d _mm512_erfinv_pd(__m512d); extern __m512d _mm512_mask_erfinv_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_erfinv_ps(__m512); extern __m512 _mm512_mask_erfinv_ps(__m512, __mmask16, __m512); extern __m512d _mm512_erfcinv_pd(__m512d); extern __m512d _mm512_mask_erfcinv_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_erfcinv_ps(__m512); extern __m512 _mm512_mask_erfcinv_ps(__m512, __mmask16, __m512); extern __m512d _mm512_exp10_pd(__m512d); extern __m512d _mm512_mask_exp10_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_exp10_ps(__m512); extern __m512 _mm512_mask_exp10_ps(__m512, __mmask16, __m512); extern __m512d _mm512_exp2_pd(__m512d); extern __m512d _mm512_mask_exp2_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_exp2_ps(__m512); extern __m512 _mm512_mask_exp2_ps(__m512, __mmask16, __m512); extern __m512d _mm512_exp_pd(__m512d); extern __m512d _mm512_mask_exp_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_exp_ps(__m512); extern __m512 _mm512_mask_exp_ps(__m512, __mmask16, __m512); extern __m512d _mm512_expm1_pd(__m512d); extern __m512d _mm512_mask_expm1_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_expm1_ps(__m512); extern __m512 _mm512_mask_expm1_ps(__m512, __mmask16, __m512); extern __m512d _mm512_floor_pd(__m512d); extern __m512d _mm512_mask_floor_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_floor_ps(__m512); extern __m512 _mm512_mask_floor_ps(__m512, __mmask16, __m512); extern __m512d _mm512_hypot_pd(__m512d, __m512d); extern __m512d _mm512_mask_hypot_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_hypot_ps(__m512, __m512); extern __m512 _mm512_mask_hypot_ps(__m512, __mmask16, __m512, __m512); extern __m512i _mm512_div_epi32(__m512i, __m512i); extern __m512i _mm512_mask_div_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_div_epi8(__m512i, __m512i); extern __m512i _mm512_div_epi16(__m512i, __m512i); extern __m512i _mm512_div_epi64(__m512i, __m512i); extern __m512 _mm512_div_ps(__m512, __m512); extern __m512 _mm512_mask_div_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_div_pd(__m512d, __m512d); extern __m512d _mm512_mask_div_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512d _mm512_invsqrt_pd(__m512d); extern __m512d _mm512_mask_invsqrt_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_invsqrt_ps(__m512); extern __m512 _mm512_mask_invsqrt_ps(__m512, __mmask16, __m512); extern __m512i _mm512_rem_epi32(__m512i, __m512i); extern __m512i _mm512_mask_rem_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_rem_epi8(__m512i, __m512i); extern __m512i _mm512_rem_epi16(__m512i, __m512i); extern __m512i _mm512_rem_epi64(__m512i, __m512i); extern __m512d _mm512_log10_pd(__m512d); extern __m512d _mm512_mask_log10_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_log10_ps(__m512); extern __m512 _mm512_mask_log10_ps(__m512, __mmask16, __m512); extern __m512d _mm512_log1p_pd(__m512d); extern __m512d _mm512_mask_log1p_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_log1p_ps(__m512); extern __m512 _mm512_mask_log1p_ps(__m512, __mmask16, __m512); extern __m512d _mm512_log2_pd(__m512d); extern __m512d _mm512_mask_log2_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_log2_ps(__m512); extern __m512 _mm512_mask_log2_ps(__m512, __mmask16, __m512); extern __m512d _mm512_log_pd(__m512d); extern __m512d _mm512_mask_log_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_log_ps(__m512); extern __m512 _mm512_mask_log_ps(__m512, __mmask16, __m512); extern __m512d _mm512_logb_pd(__m512d); extern __m512d _mm512_mask_logb_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_logb_ps(__m512); extern __m512 _mm512_mask_logb_ps(__m512, __mmask16, __m512); extern __m512d _mm512_nearbyint_pd(__m512d); extern __m512d _mm512_mask_nearbyint_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_nearbyint_ps(__m512); extern __m512 _mm512_mask_nearbyint_ps(__m512, __mmask16, __m512); extern __m512d _mm512_pow_pd(__m512d, __m512d); extern __m512d _mm512_mask_pow_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512 _mm512_pow_ps(__m512, __m512); extern __m512 _mm512_mask_pow_ps(__m512, __mmask16, __m512, __m512); extern __m512d _mm512_recip_pd(__m512d); extern __m512d _mm512_mask_recip_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_recip_ps(__m512); extern __m512 _mm512_mask_recip_ps(__m512, __mmask16, __m512); extern __m512d _mm512_rint_pd(__m512d); extern __m512d _mm512_mask_rint_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_rint_ps(__m512); extern __m512 _mm512_mask_rint_ps(__m512, __mmask16, __m512); extern __m512d _mm512_svml_round_pd(__m512d); extern __m512d _mm512_mask_svml_round_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_sin_pd(__m512d); extern __m512d _mm512_mask_sin_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_sin_ps(__m512); extern __m512 _mm512_mask_sin_ps(__m512, __mmask16, __m512); extern __m512d _mm512_sinh_pd(__m512d); extern __m512d _mm512_mask_sinh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_sinh_ps(__m512); extern __m512 _mm512_mask_sinh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_sind_pd(__m512d); extern __m512d _mm512_mask_sind_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_sind_ps(__m512); extern __m512 _mm512_mask_sind_ps(__m512, __mmask16, __m512); extern __m512d _mm512_sqrt_pd(__m512d); extern __m512d _mm512_mask_sqrt_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_sqrt_ps(__m512); extern __m512 _mm512_mask_sqrt_ps(__m512, __mmask16, __m512); extern __m512d _mm512_tan_pd(__m512d); extern __m512d _mm512_mask_tan_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_tan_ps(__m512); extern __m512 _mm512_mask_tan_ps(__m512, __mmask16, __m512); extern __m512d _mm512_tand_pd(__m512d); extern __m512d _mm512_mask_tand_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_tand_ps(__m512); extern __m512 _mm512_mask_tand_ps(__m512, __mmask16, __m512); extern __m512d _mm512_tanh_pd(__m512d); extern __m512d _mm512_mask_tanh_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_tanh_ps(__m512); extern __m512 _mm512_mask_tanh_ps(__m512, __mmask16, __m512); extern __m512d _mm512_trunc_pd(__m512d); extern __m512d _mm512_mask_trunc_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_trunc_ps(__m512); extern __m512 _mm512_mask_trunc_ps(__m512, __mmask16, __m512); extern __m512i _mm512_div_epu32(__m512i, __m512i); extern __m512i _mm512_mask_div_epu32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_div_epu8(__m512i, __m512i); extern __m512i _mm512_div_epu16(__m512i, __m512i); extern __m512i _mm512_div_epu64(__m512i, __m512i); extern __m512i _mm512_rem_epu32(__m512i, __m512i); extern __m512i _mm512_mask_rem_epu32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_rem_epu8(__m512i, __m512i); extern __m512i _mm512_rem_epu16(__m512i, __m512i); extern __m512i _mm512_rem_epu64(__m512i, __m512i); extern float _mm512_reduce_add_ps(__m512); extern float _mm512_mask_reduce_add_ps(__mmask16, __m512); extern double _mm512_reduce_add_pd(__m512d); extern double _mm512_mask_reduce_add_pd(__mmask8, __m512d); extern int _mm512_reduce_add_epi32(__m512i); extern int _mm512_mask_reduce_add_epi32(__mmask16, __m512i); extern float _mm512_reduce_mul_ps(__m512); extern float _mm512_mask_reduce_mul_ps(__mmask16, __m512); extern double _mm512_reduce_mul_pd(__m512d); extern double _mm512_mask_reduce_mul_pd(__mmask8, __m512d); extern int _mm512_reduce_mul_epi32(__m512i); extern int _mm512_mask_reduce_mul_epi32(__mmask16, __m512i); extern float _mm512_reduce_min_ps(__m512); extern float _mm512_mask_reduce_min_ps(__mmask16, __m512); extern double _mm512_reduce_min_pd(__m512d); extern double _mm512_mask_reduce_min_pd(__mmask8, __m512d); extern int _mm512_reduce_min_epi32(__m512i); extern int _mm512_mask_reduce_min_epi32(__mmask16, __m512i); extern unsigned int _mm512_reduce_min_epu32(__m512i); extern unsigned int _mm512_mask_reduce_min_epu32(__mmask16, __m512i); extern float _mm512_reduce_max_ps(__m512); extern float _mm512_mask_reduce_max_ps(__mmask16, __m512); extern double _mm512_reduce_max_pd(__m512d); extern double _mm512_mask_reduce_max_pd(__mmask8, __m512d); extern int _mm512_reduce_max_epi32(__m512i); extern int _mm512_mask_reduce_max_epi32(__mmask16, __m512i); extern unsigned int _mm512_reduce_max_epu32(__m512i); extern unsigned int _mm512_mask_reduce_max_epu32(__mmask16, __m512i); extern int _mm512_reduce_or_epi32(__m512i); extern int _mm512_mask_reduce_or_epi32(__mmask16, __m512i); extern int _mm512_reduce_and_epi32(__m512i); extern int _mm512_mask_reduce_and_epi32(__mmask16, __m512i); extern float _mm512_reduce_gmin_ps(__m512); extern float _mm512_mask_reduce_gmin_ps(__mmask16, __m512); extern double _mm512_reduce_gmin_pd(__m512d); extern double _mm512_mask_reduce_gmin_pd(__mmask8, __m512d); extern float _mm512_reduce_gmax_ps(__m512); extern float _mm512_mask_reduce_gmax_ps(__mmask16, __m512); extern double _mm512_reduce_gmax_pd(__m512d); extern double _mm512_mask_reduce_gmax_pd(__mmask8, __m512d); extern int _mm_tzcnt_32(unsigned int); extern __int64 _mm_tzcnt_64(unsigned __int64); extern int _mm_tzcnti_32(int, unsigned int); extern __int64 _mm_tzcnti_64(__int64, unsigned __int64); extern unsigned int _mm_countbits_32(unsigned int); extern unsigned __int64 _mm_countbits_64(unsigned __int64); extern void _mm_delay_32(unsigned int); extern void _mm_delay_64(unsigned __int64); extern void _mm_spflt_32(unsigned int); extern void _mm_spflt_64(unsigned __int64); extern void _mm_clevict(const void*, int ); extern __mmask16 _mm512_kand (__mmask16, __mmask16); extern __mmask16 _mm512_kandn (__mmask16, __mmask16); extern __mmask16 _mm512_kandnr (__mmask16, __mmask16); extern __mmask16 _mm512_kmovlhb (__mmask16, __mmask16); extern __mmask16 _mm512_knot (__mmask16); extern __mmask16 _mm512_kor (__mmask16, __mmask16); extern __mmask16 _mm512_kxnor (__mmask16, __mmask16); extern __mmask16 _mm512_kxor (__mmask16, __mmask16); extern __mmask16 _mm512_kswapb (__mmask16, __mmask16); extern int _mm512_kortestz (__mmask16, __mmask16); extern int _mm512_kortestc (__mmask16, __mmask16); extern __mmask16 _mm512_kmov (__mmask16); extern int _mm512_mask2int (__mmask16); extern __mmask16 _mm512_int2mask (int); extern __int64 _mm512_kconcathi_64(__mmask16, __mmask16); extern __int64 _mm512_kconcatlo_64(__mmask16, __mmask16); extern __mmask16 _mm512_kextract_64(__int64, const int ); extern __m128d _mm512_castpd512_pd128(__m512d); extern __m128 _mm512_castps512_ps128(__m512); extern __m128i _mm512_castsi512_si128(__m512i); extern __m256d _mm512_castpd512_pd256(__m512d); extern __m256 _mm512_castps512_ps256(__m512); extern __m256i _mm512_castsi512_si256(__m512i); extern __m512d _mm512_castpd128_pd512(__m128d); extern __m512 _mm512_castps128_ps512(__m128); extern __m512i _mm512_castsi128_si512(__m128i); extern __m512d _mm512_castpd256_pd512(__m256d); extern __m512 _mm512_castps256_ps512(__m256); extern __m512i _mm512_castsi256_si512(__m256i); extern __m512d _mm512_maskz_load_pd(__mmask8, void const*); extern __m512 _mm512_maskz_load_ps(__mmask16, void const*); extern __m512i _mm512_maskz_load_epi32(__mmask16, void const*); extern __m512i _mm512_maskz_load_epi64(__mmask8, void const*); extern __m128d _mm_mask_load_sd(__m128d, __mmask8, const double*); extern __m128d _mm_maskz_load_sd(__mmask8, const double*); extern __m128 _mm_mask_load_ss(__m128, __mmask8, const float*); extern __m128 _mm_maskz_load_ss(__mmask8, const float*); extern __m512d _mm512_loadu_pd(void const*); extern __m512 _mm512_loadu_ps(void const*); extern __m512i _mm512_loadu_si512(void const*); extern __m512d _mm512_mask_loadu_pd(__m512d, __mmask8, void const*); extern __m512 _mm512_mask_loadu_ps(__m512, __mmask16, void const*); extern __m512i _mm512_mask_loadu_epi32(__m512i, __mmask16, void const*); extern __m512i _mm512_mask_loadu_epi64(__m512i, __mmask8, void const*); extern __m512d _mm512_maskz_loadu_pd(__mmask8, void const*); extern __m512 _mm512_maskz_loadu_ps(__mmask16, void const*); extern __m512i _mm512_maskz_loadu_epi32(__mmask16, void const*); extern __m512i _mm512_maskz_loadu_epi64(__mmask8, void const*); extern void _mm512_storeu_pd(void*, __m512d); extern void _mm512_storeu_ps(void*, __m512); extern void _mm512_storeu_si512(void*, __m512i); extern void _mm512_mask_storeu_pd(void*, __mmask8, __m512d); extern void _mm512_mask_storeu_ps(void*, __mmask16, __m512); extern void _mm512_mask_storeu_epi32(void*, __mmask16, __m512i); extern void _mm512_mask_storeu_epi64(void*, __mmask8, __m512i); extern void _mm_mask_store_sd(double*, __mmask8, __m128d); extern void _mm_mask_store_ss(float*, __mmask8, __m128); extern void _mm512_stream_pd(void*, __m512d); extern void _mm512_stream_ps(void*, __m512); extern void _mm512_stream_si512(void*, __m512i); extern __m512i _mm512_stream_load_si512(void const*); extern __m512d _mm512_broadcastsd_pd(__m128d); extern __m512d _mm512_mask_broadcastsd_pd(__m512d, __mmask8, __m128d); extern __m512d _mm512_maskz_broadcastsd_pd(__mmask8, __m128d); extern __m512 _mm512_broadcastss_ps(__m128); extern __m512 _mm512_mask_broadcastss_ps(__m512, __mmask16, __m128); extern __m512 _mm512_maskz_broadcastss_ps(__mmask16, __m128); extern __m512 _mm512_broadcast_f32x4(__m128); extern __m512 _mm512_mask_broadcast_f32x4(__m512, __mmask16, __m128); extern __m512 _mm512_maskz_broadcast_f32x4(__mmask16, __m128); extern __m512d _mm512_broadcast_f64x4(__m256d); extern __m512d _mm512_mask_broadcast_f64x4(__m512d, __mmask8, __m256d); extern __m512d _mm512_maskz_broadcast_f64x4(__mmask8, __m256d); extern __m512i _mm512_broadcast_i32x4(__m128i); extern __m512i _mm512_mask_broadcast_i32x4(__m512i, __mmask16, __m128i); extern __m512i _mm512_maskz_broadcast_i32x4(__mmask16, __m128i); extern __m512i _mm512_broadcast_i64x4(__m256i); extern __m512i _mm512_mask_broadcast_i64x4(__m512i, __mmask8, __m256i); extern __m512i _mm512_maskz_broadcast_i64x4(__mmask8, __m256i); extern __m512i _mm512_broadcastd_epi32(__m128i); extern __m512i _mm512_mask_broadcastd_epi32(__m512i, __mmask16, __m128i); extern __m512i _mm512_maskz_broadcastd_epi32(__mmask16, __m128i); extern __m512i _mm512_broadcastq_epi64(__m128i); extern __m512i _mm512_mask_broadcastq_epi64(__m512i, __mmask8, __m128i); extern __m512i _mm512_maskz_broadcastq_epi64(__mmask8, __m128i); extern __m512i _mm512_maskz_mov_epi32(__mmask16, __m512i); extern __m512i _mm512_maskz_mov_epi64(__mmask8, __m512i); extern __m512d _mm512_maskz_mov_pd(__mmask8, __m512d); extern __m512 _mm512_maskz_mov_ps(__mmask16, __m512); extern __m128d _mm_mask_move_sd(__m128d, __mmask8, __m128d, __m128d); extern __m128d _mm_maskz_move_sd(__mmask8, __m128d, __m128d); extern __m128 _mm_mask_move_ss(__m128, __mmask8, __m128, __m128); extern __m128 _mm_maskz_move_ss(__mmask8, __m128 , __m128 ); extern __m512d _mm512_mask_movedup_pd(__m512d, __mmask8, __m512d); extern __m512 _mm512_mask_movehdup_ps(__m512, __mmask16, __m512); extern __m512 _mm512_mask_moveldup_ps(__m512, __mmask16, __m512); extern __m512d _mm512_maskz_movedup_pd(__mmask8, __m512d); extern __m512 _mm512_maskz_movehdup_ps(__mmask16, __m512); extern __m512 _mm512_maskz_moveldup_ps(__mmask16, __m512); extern __m512d _mm512_movedup_pd(__m512d); extern __m512 _mm512_movehdup_ps(__m512); extern __m512 _mm512_moveldup_ps(__m512); extern __mmask8 _mm512_cmp_round_pd_mask(__m512d, __m512d, const int, const int); extern __mmask8 _mm512_mask_cmp_round_pd_mask(__mmask8, __m512d, __m512d, const int, const int); extern __mmask8 _mm_cmp_round_sd_mask(__m128d, __m128d, const int, const int); extern __mmask8 _mm_mask_cmp_round_sd_mask(__mmask8, __m128d, __m128d, const int, const int); extern int _mm_comi_round_sd(__m128d, __m128d, const int, const int); extern __mmask16 _mm512_cmp_round_ps_mask(__m512, __m512, const int, const int); extern __mmask16 _mm512_mask_cmp_round_ps_mask(__mmask16, __m512, __m512, const int, const int); extern __mmask8 _mm_cmp_round_ss_mask(__m128, __m128, const int, const int); extern __mmask8 _mm_mask_cmp_round_ss_mask(__mmask8, __m128, __m128, const int, const int); extern __mmask8 _mm512_cmp_epi64_mask(__m512i, __m512i, const _MM_CMPINT_ENUM); extern __mmask8 _mm512_mask_cmp_epi64_mask(__mmask8, __m512i, __m512i, const _MM_CMPINT_ENUM); extern int _mm_comi_round_ss(__m128, __m128, const int, const int); # 3022 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __mmask8 _mm512_cmp_epu64_mask(__m512i, __m512i, const _MM_CMPINT_ENUM); extern __mmask8 _mm512_mask_cmp_epu64_mask(__mmask8, __m512i, __m512i, const _MM_CMPINT_ENUM); # 3053 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __mmask8 _mm512_test_epi64_mask(__m512i, __m512i); extern __mmask8 _mm512_mask_test_epi64_mask(__mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_and_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_and_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_or_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_or_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_andnot_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_andnot_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_alignr_epi32(__mmask16, __m512i, __m512i, const int); extern __m512i _mm512_alignr_epi64(__m512i, __m512i, const int); extern __m512i _mm512_mask_alignr_epi64(__m512i, __mmask8, __m512i, __m512i, const int); extern __m512i _mm512_maskz_alignr_epi64(__mmask8, __m512i, __m512i, const int); extern __m512i _mm512_mask_expand_epi32(__m512i, __mmask16, __m512i); extern __m512i _mm512_maskz_expand_epi32(__mmask16, __m512i); extern __m512i _mm512_mask_expandloadu_epi32(__m512i, __mmask16, void const*); extern __m512i _mm512_maskz_expandloadu_epi32(__mmask16, void const*); extern __m512i _mm512_mask_expand_epi64(__m512i, __mmask8, __m512i); extern __m512i _mm512_maskz_expand_epi64(__mmask8, __m512i); extern __m512i _mm512_mask_expandloadu_epi64(__m512i, __mmask8, void const*); extern __m512i _mm512_maskz_expandloadu_epi64(__mmask8, void const*); extern __m512d _mm512_mask_expand_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_maskz_expand_pd(__mmask8, __m512d); extern __m512d _mm512_mask_expandloadu_pd(__m512d, __mmask8, void const*); extern __m512d _mm512_maskz_expandloadu_pd(__mmask8, void const*); extern __m512 _mm512_mask_expand_ps(__m512, __mmask16, __m512); extern __m512 _mm512_maskz_expand_ps(__mmask16, __m512); extern __m512 _mm512_mask_expandloadu_ps(__m512, __mmask16, void const*); extern __m512 _mm512_maskz_expandloadu_ps(__mmask16, void const*); extern __m128d _mm_getexp_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_getexp_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_getexp_round_sd(__mmask8, __m128d, __m128d, int); # 3121 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_getexp_round_ss(__m128, __m128, int); extern __m128 _mm_mask_getexp_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_getexp_round_ss(__mmask8, __m128, __m128, int); # 3133 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_getexp_round_pd(__m512d, int); extern __m512d _mm512_mask_getexp_round_pd(__m512d, __mmask8, __m512d, int); extern __m512d _mm512_maskz_getexp_round_pd(__mmask8, __m512d, int); extern __m512 _mm512_getexp_round_ps(__m512, int); extern __m512 _mm512_mask_getexp_round_ps(__m512, __mmask16, __m512, int); extern __m512 _mm512_maskz_getexp_round_ps(__mmask16, __m512, int); extern __m512i _mm512_unpackhi_epi32(__m512i, __m512i); extern __m512i _mm512_mask_unpackhi_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_unpackhi_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_unpackhi_epi64(__m512i, __m512i); extern __m512i _mm512_mask_unpackhi_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_unpackhi_epi64(__mmask8, __m512i, __m512i); extern __m512d _mm512_unpackhi_pd(__m512d, __m512d); extern __m512d _mm512_mask_unpackhi_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512d _mm512_maskz_unpackhi_pd(__mmask8, __m512d, __m512d); extern __m512 _mm512_unpackhi_ps(__m512, __m512); extern __m512 _mm512_mask_unpackhi_ps(__m512, __mmask16, __m512, __m512); extern __m512 _mm512_maskz_unpackhi_ps(__mmask16, __m512, __m512); extern __m512i _mm512_unpacklo_epi32(__m512i, __m512i); extern __m512i _mm512_mask_unpacklo_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_unpacklo_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_unpacklo_epi64(__m512i, __m512i); extern __m512i _mm512_mask_unpacklo_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_unpacklo_epi64(__mmask8, __m512i, __m512i); extern __m512d _mm512_unpacklo_pd(__m512d, __m512d); extern __m512d _mm512_mask_unpacklo_pd(__m512d, __mmask8, __m512d, __m512d); extern __m512d _mm512_maskz_unpacklo_pd(__mmask8, __m512d, __m512d); extern __m512 _mm512_unpacklo_ps(__m512, __m512); extern __m512 _mm512_mask_unpacklo_ps(__m512, __mmask16, __m512, __m512); extern __m512 _mm512_maskz_unpacklo_ps(__mmask16, __m512, __m512); extern __m512i _mm512_maskz_shuffle_epi32(__mmask16, __m512i, _MM_PERM_ENUM); extern __m512 _mm512_shuffle_f32x4(__m512, __m512, const int); extern __m512 _mm512_mask_shuffle_f32x4(__m512, __mmask16, __m512, __m512, const int); extern __m512 _mm512_maskz_shuffle_f32x4(__mmask16, __m512, __m512, const int); extern __m512d _mm512_shuffle_f64x2(__m512d, __m512d, const int); extern __m512d _mm512_mask_shuffle_f64x2(__m512d, __mmask8, __m512d, __m512d, const int); extern __m512d _mm512_maskz_shuffle_f64x2(__mmask8, __m512d, __m512d, const int); extern __m512i _mm512_shuffle_i32x4(__m512i, __m512i, const int); extern __m512i _mm512_mask_shuffle_i32x4(__m512i, __mmask16, __m512i, __m512i, const int); extern __m512i _mm512_maskz_shuffle_i32x4(__mmask16, __m512i, __m512i, const int); extern __m512i _mm512_shuffle_i64x2(__m512i, __m512i, const int); extern __m512i _mm512_mask_shuffle_i64x2(__m512i, __mmask8, __m512i, __m512i, const int); extern __m512i _mm512_maskz_shuffle_i64x2(__mmask8, __m512i, __m512i, const int); extern __m512d _mm512_shuffle_pd(__m512d, __m512d, const int); extern __m512d _mm512_mask_shuffle_pd(__m512d, __mmask8, __m512d, __m512d, const int); extern __m512d _mm512_maskz_shuffle_pd(__mmask8, __m512d, __m512d, const int); extern __m512 _mm512_shuffle_ps(__m512, __m512, const int); extern __m512 _mm512_mask_shuffle_ps(__m512, __mmask16, __m512, __m512, const int); extern __m512 _mm512_maskz_shuffle_ps(__mmask16, __m512, __m512, const int); extern __m512i _mm512_permutex2var_epi32(__m512i, __m512i , __m512i); extern __m512i _mm512_mask_permutex2var_epi32(__m512i, __mmask16, __m512i , __m512i); extern __m512i _mm512_mask2_permutex2var_epi32(__m512i, __m512i , __mmask16, __m512i); extern __m512i _mm512_maskz_permutex2var_epi32(__mmask16, __m512i, __m512i , __m512i); extern __m512i _mm512_permutex2var_epi64(__m512i, __m512i , __m512i); extern __m512i _mm512_mask_permutex2var_epi64(__m512i, __mmask8, __m512i , __m512i); extern __m512i _mm512_mask2_permutex2var_epi64(__m512i, __m512i , __mmask8, __m512i); extern __m512i _mm512_maskz_permutex2var_epi64(__mmask8, __m512i, __m512i , __m512i); extern __m512 _mm512_permutex2var_ps(__m512, __m512i , __m512); extern __m512 _mm512_mask_permutex2var_ps(__m512, __mmask16, __m512i , __m512); extern __m512 _mm512_mask2_permutex2var_ps(__m512, __m512i , __mmask16, __m512); extern __m512 _mm512_maskz_permutex2var_ps(__mmask16, __m512, __m512i , __m512); extern __m512d _mm512_permutex2var_pd(__m512d, __m512i , __m512d); extern __m512d _mm512_mask_permutex2var_pd(__m512d, __mmask8, __m512i , __m512d); extern __m512d _mm512_mask2_permutex2var_pd(__m512d, __m512i , __mmask8, __m512d); extern __m512d _mm512_maskz_permutex2var_pd(__mmask8, __m512d, __m512i , __m512d); extern __m512d _mm512_permute_pd(__m512d, const int); extern __m512d _mm512_mask_permute_pd(__m512d, __mmask8, __m512d, const int); extern __m512d _mm512_maskz_permute_pd(__mmask8, __m512d, const int); extern __m512 _mm512_permute_ps(__m512, const int); extern __m512 _mm512_mask_permute_ps(__m512, __mmask16, __m512, const int); extern __m512 _mm512_maskz_permute_ps(__mmask16, __m512, const int); extern __m512d _mm512_permutevar_pd(__m512d, __m512i); extern __m512d _mm512_mask_permutevar_pd(__m512d, __mmask8, __m512d, __m512i); extern __m512d _mm512_maskz_permutevar_pd(__mmask8, __m512d, __m512i); extern __m512d _mm512_permutex_pd(__m512d, const int); extern __m512d _mm512_mask_permutex_pd(__m512d, __mmask8, __m512d, const int); extern __m512d _mm512_maskz_permutex_pd(__mmask8, __m512d, const int); extern __m512d _mm512_permutexvar_pd(__m512i, __m512d); extern __m512d _mm512_mask_permutexvar_pd(__m512d, __mmask8, __m512i, __m512d); extern __m512d _mm512_maskz_permutexvar_pd(__mmask8, __m512i, __m512d); extern __m512 _mm512_permutevar_ps(__m512, __m512i); extern __m512 _mm512_mask_permutevar_ps(__m512, __mmask16, __m512, __m512i); extern __m512 _mm512_maskz_permutevar_ps(__mmask16, __m512, __m512i); extern __m512i _mm512_permutexvar_epi32(__m512i, __m512i); extern __m512i _mm512_mask_permutexvar_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_permutexvar_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_permutex_epi64(__m512i, const int); extern __m512i _mm512_mask_permutex_epi64(__m512i, __mmask8, __m512i, const int); extern __m512i _mm512_maskz_permutex_epi64(__mmask8, __m512i, const int); extern __m512i _mm512_permutexvar_epi64(__m512i, __m512i); extern __m512i _mm512_mask_permutexvar_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_permutexvar_epi64(__mmask8, __m512i, __m512i); extern __m512 _mm512_permutexvar_ps(__m512i, __m512); extern __m512 _mm512_mask_permutexvar_ps(__m512, __mmask16, __m512i, __m512); extern __m512 _mm512_maskz_permutexvar_ps(__mmask16, __m512i, __m512); extern __m512i _mm512_abs_epi32(__m512i); extern __m512i _mm512_mask_abs_epi32(__m512i, __mmask16, __m512i); extern __m512i _mm512_maskz_abs_epi32(__mmask16, __m512i); extern __m512i _mm512_abs_epi64(__m512i); extern __m512i _mm512_mask_abs_epi64(__m512i, __mmask8, __m512i); extern __m512i _mm512_maskz_abs_epi64(__mmask8, __m512i); extern __m512i _mm512_maskz_add_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_add_epi64(__mmask8, __m512i, __m512i); extern __m128d _mm_add_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_add_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_add_round_sd(__mmask8, __m128d, __m128d, int); # 3369 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_add_round_ss(__m128, __m128, int); extern __m128 _mm_mask_add_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_add_round_ss(__mmask8, __m128, __m128, int); # 3381 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_div_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_div_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_div_round_sd(__mmask8, __m128d, __m128d, int); # 3393 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_div_round_ss(__m128, __m128, int); extern __m128 _mm_mask_div_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_div_round_ss(__mmask8, __m128, __m128, int); # 3405 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_max_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_max_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_max_round_sd(__mmask8, __m128d, __m128d, int); # 3418 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_max_round_ss(__m128, __m128, int); extern __m128 _mm_mask_max_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_max_round_ss(__mmask8, __m128, __m128, int); # 3430 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_min_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_min_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_min_round_sd(__mmask8, __m128d, __m128d, int); # 3442 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_min_round_ss(__m128, __m128, int); extern __m128 _mm_mask_min_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_min_round_ss(__mmask8, __m128, __m128, int); # 3454 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_mul_epi32(__m512i, __m512i); extern __m512i _mm512_mask_mul_epi32(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_mul_epi32(__mmask8, __m512i, __m512i); extern __m512i _mm512_mul_epu32(__m512i, __m512i); extern __m512i _mm512_mask_mul_epu32(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_mul_epu32(__mmask8, __m512i, __m512i); extern __m128d _mm_mul_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_mul_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_mul_round_sd(__mmask8, __m128d, __m128d, int); # 3477 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_mul_round_ss(__m128, __m128, int); extern __m128 _mm_mask_mul_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_mul_round_ss(__mmask8, __m128, __m128, int); # 3489 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_rcp14_sd(__m128d, __m128d); extern __m128d _mm_mask_rcp14_sd(__m128d, __mmask8, __m128d, __m128d); extern __m128d _mm_maskz_rcp14_sd(__mmask8, __m128d, __m128d); extern __m128 _mm_rcp14_ss(__m128, __m128); extern __m128 _mm_mask_rcp14_ss(__m128, __mmask8, __m128, __m128); extern __m128 _mm_maskz_rcp14_ss(__mmask8, __m128, __m128); extern __m512i _mm512_rol_epi32(__m512i, const int); extern __m512i _mm512_mask_rol_epi32(__m512i, __mmask16, __m512i, const int); extern __m512i _mm512_maskz_rol_epi32(__mmask16, __m512i, const int); extern __m512i _mm512_rol_epi64(__m512i, const int); extern __m512i _mm512_mask_rol_epi64(__m512i, __mmask8, __m512i, const int); extern __m512i _mm512_maskz_rol_epi64(__mmask8, __m512i, const int); extern __m512i _mm512_rolv_epi32(__m512i, __m512i); extern __m512i _mm512_mask_rolv_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_rolv_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_rolv_epi64(__m512i, __m512i); extern __m512i _mm512_mask_rolv_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_rolv_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_ror_epi32(__m512i, int); extern __m512i _mm512_mask_ror_epi32(__m512i, __mmask16, __m512i, int); extern __m512i _mm512_maskz_ror_epi32(__mmask16, __m512i, int); extern __m512i _mm512_ror_epi64(__m512i, int); extern __m512i _mm512_mask_ror_epi64(__m512i, __mmask8, __m512i, int); extern __m512i _mm512_maskz_ror_epi64(__mmask8, __m512i, int); extern __m512i _mm512_rorv_epi32(__m512i, __m512i); extern __m512i _mm512_mask_rorv_epi32(__m512i, __mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_rorv_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_rorv_epi64(__m512i, __m512i); extern __m512i _mm512_mask_rorv_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_rorv_epi64(__mmask8, __m512i, __m512i); extern __m128d _mm_rsqrt14_sd(__m128d, __m128d); extern __m128d _mm_mask_rsqrt14_sd(__m128d, __mmask8, __m128d, __m128d); extern __m128d _mm_maskz_rsqrt14_sd(__mmask8, __m128d, __m128d); extern __m128 _mm_rsqrt14_ss(__m128, __m128); extern __m128 _mm_mask_rsqrt14_ss(__m128, __mmask8, __m128, __m128); extern __m128 _mm_maskz_rsqrt14_ss(__mmask8, __m128, __m128); extern __m512i _mm512_sll_epi32(__m512i, __m128i); extern __m512i _mm512_mask_sll_epi32(__m512i, __mmask16, __m512i, __m128i); extern __m512i _mm512_maskz_sll_epi32(__mmask16, __m512i, __m128i); extern __m512i _mm512_sra_epi32(__m512i, __m128i); extern __m512i _mm512_mask_sra_epi32(__m512i, __mmask16, __m512i, __m128i); extern __m512i _mm512_maskz_sra_epi32(__mmask16, __m512i, __m128i); extern __m512i _mm512_srl_epi32(__m512i, __m128i); extern __m512i _mm512_mask_srl_epi32(__m512i, __mmask16, __m512i, __m128i); extern __m512i _mm512_maskz_srl_epi32(__mmask16, __m512i, __m128i); extern __m512i _mm512_maskz_slli_epi32(__mmask16, __m512i, unsigned int); extern __m512i _mm512_maskz_srai_epi32(__mmask16, __m512i, unsigned int); extern __m512i _mm512_maskz_srli_epi32(__mmask16, __m512i, unsigned int); extern __m512i _mm512_maskz_sllv_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_srav_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_srlv_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_sll_epi64(__m512i, __m128i); extern __m512i _mm512_mask_sll_epi64(__m512i, __mmask8, __m512i, __m128i); extern __m512i _mm512_maskz_sll_epi64(__mmask8, __m512i, __m128i); extern __m512i _mm512_sra_epi64(__m512i, __m128i); extern __m512i _mm512_mask_sra_epi64(__m512i, __mmask8, __m512i, __m128i); extern __m512i _mm512_maskz_sra_epi64(__mmask8, __m512i, __m128i); extern __m512i _mm512_srl_epi64(__m512i, __m128i); extern __m512i _mm512_mask_srl_epi64(__m512i, __mmask8, __m512i, __m128i); extern __m512i _mm512_maskz_srl_epi64(__mmask8, __m512i, __m128i); extern __m512i _mm512_slli_epi64(__m512i, unsigned int); extern __m512i _mm512_mask_slli_epi64(__m512i, __mmask8, __m512i, unsigned int); extern __m512i _mm512_maskz_slli_epi64(__mmask8, __m512i, unsigned int); extern __m512i _mm512_srai_epi64(__m512i, unsigned int); extern __m512i _mm512_mask_srai_epi64(__m512i, __mmask8, __m512i, unsigned int); extern __m512i _mm512_maskz_srai_epi64(__mmask8, __m512i, unsigned int); extern __m512i _mm512_srli_epi64(__m512i, unsigned int); extern __m512i _mm512_mask_srli_epi64(__m512i, __mmask8, __m512i, unsigned int); extern __m512i _mm512_maskz_srli_epi64(__mmask8, __m512i, unsigned int); extern __m512i _mm512_sllv_epi64(__m512i, __m512i); extern __m512i _mm512_mask_sllv_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_sllv_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_srav_epi64(__m512i, __m512i); extern __m512i _mm512_maskz_srav_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_mask_srav_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_srlv_epi64(__m512i, __m512i); extern __m512i _mm512_maskz_srlv_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_mask_srlv_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m128d _mm_sub_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_sub_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_sub_round_sd(__mmask8, __m128d, __m128d, int); # 3645 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_sub_round_ss(__m128, __m128, int); extern __m128 _mm_mask_sub_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_sub_round_ss(__mmask8, __m128, __m128, int); # 3657 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_cvtepi8_epi32(__m128i); extern __m512i _mm512_mask_cvtepi8_epi32(__m512i, __mmask16, __m128i); extern __m512i _mm512_maskz_cvtepi8_epi32(__mmask16, __m128i); extern __m512i _mm512_cvtepi8_epi64(__m128i); extern __m512i _mm512_mask_cvtepi8_epi64(__m512i, __mmask8, __m128i); extern __m512i _mm512_maskz_cvtepi8_epi64(__mmask8, __m128i); extern __m512i _mm512_cvtepi16_epi32(__m256i); extern __m512i _mm512_mask_cvtepi16_epi32(__m512i, __mmask16, __m256i); extern __m512i _mm512_maskz_cvtepi16_epi32(__mmask16, __m256i); extern __m512i _mm512_cvtepi16_epi64(__m128i); extern __m512i _mm512_mask_cvtepi16_epi64(__m512i, __mmask8, __m128i); extern __m512i _mm512_maskz_cvtepi16_epi64(__mmask8, __m128i); extern __m128i _mm512_cvtepi32_epi8(__m512i); extern __m128i _mm512_mask_cvtepi32_epi8(__m128i, __mmask16, __m512i); extern __m128i _mm512_maskz_cvtepi32_epi8(__mmask16, __m512i); extern void _mm512_mask_cvtepi32_storeu_epi8(void*, __mmask16, __m512i); extern __m128i _mm512_cvtsepi32_epi8(__m512i); extern __m128i _mm512_mask_cvtsepi32_epi8(__m128i, __mmask16, __m512i); extern __m128i _mm512_maskz_cvtsepi32_epi8(__mmask16, __m512i); extern void _mm512_mask_cvtsepi32_storeu_epi8(void*, __mmask16, __m512i); extern __m128i _mm512_cvtusepi32_epi8(__m512i); extern __m128i _mm512_mask_cvtusepi32_epi8(__m128i, __mmask16, __m512i); extern __m128i _mm512_maskz_cvtusepi32_epi8(__mmask16, __m512i); extern void _mm512_mask_cvtusepi32_storeu_epi8(void*, __mmask16, __m512i); extern __m256i _mm512_cvtepi32_epi16(__m512i); extern __m256i _mm512_mask_cvtepi32_epi16(__m256i, __mmask16, __m512i); extern __m256i _mm512_maskz_cvtepi32_epi16(__mmask16, __m512i); extern void _mm512_mask_cvtepi32_storeu_epi16(void*, __mmask16, __m512i); extern __m256i _mm512_cvtsepi32_epi16(__m512i); extern __m256i _mm512_mask_cvtsepi32_epi16(__m256i, __mmask16, __m512i); extern __m256i _mm512_maskz_cvtsepi32_epi16(__mmask16, __m512i); extern void _mm512_mask_cvtsepi32_storeu_epi16(void*, __mmask16, __m512i); extern __m256i _mm512_cvtusepi32_epi16(__m512i); extern __m256i _mm512_mask_cvtusepi32_epi16(__m256i, __mmask16, __m512i); extern __m256i _mm512_maskz_cvtusepi32_epi16(__mmask16, __m512i); extern void _mm512_mask_cvtusepi32_storeu_epi16(void*, __mmask16, __m512i); extern __m512i _mm512_cvtepi32_epi64(__m256i); extern __m512i _mm512_mask_cvtepi32_epi64(__m512i, __mmask8, __m256i); extern __m512i _mm512_maskz_cvtepi32_epi64(__mmask8, __m256i); extern __m128i _mm512_cvtepi64_epi8(__m512i); extern __m128i _mm512_mask_cvtepi64_epi8(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtepi64_epi8(__mmask8, __m512i); extern void _mm512_mask_cvtepi64_storeu_epi8(void*, __mmask8, __m512i); extern __m128i _mm512_cvtsepi64_epi8(__m512i); extern __m128i _mm512_mask_cvtsepi64_epi8(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtsepi64_epi8(__mmask8, __m512i); extern void _mm512_mask_cvtsepi64_storeu_epi8(void*, __mmask8, __m512i); extern __m128i _mm512_cvtusepi64_epi8(__m512i); extern __m128i _mm512_mask_cvtusepi64_epi8(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtusepi64_epi8(__mmask8, __m512i); extern void _mm512_mask_cvtusepi64_storeu_epi8(void*, __mmask8, __m512i); extern __m128i _mm512_cvtepi64_epi16(__m512i); extern __m128i _mm512_mask_cvtepi64_epi16(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtepi64_epi16(__mmask8, __m512i); extern void _mm512_mask_cvtepi64_storeu_epi16(void*, __mmask8, __m512i); extern __m128i _mm512_cvtsepi64_epi16(__m512i); extern __m128i _mm512_mask_cvtsepi64_epi16(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtsepi64_epi16(__mmask8, __m512i); extern void _mm512_mask_cvtsepi64_storeu_epi16(void*, __mmask8, __m512i); extern __m128i _mm512_cvtusepi64_epi16(__m512i); extern __m128i _mm512_mask_cvtusepi64_epi16(__m128i, __mmask8, __m512i); extern __m128i _mm512_maskz_cvtusepi64_epi16(__mmask8, __m512i); extern void _mm512_mask_cvtusepi64_storeu_epi16(void*, __mmask8, __m512i); extern __m256i _mm512_cvtepi64_epi32(__m512i); extern __m256i _mm512_mask_cvtepi64_epi32(__m256i, __mmask8, __m512i); extern __m256i _mm512_maskz_cvtepi64_epi32(__mmask8, __m512i); extern void _mm512_mask_cvtepi64_storeu_epi32(void*, __mmask8, __m512i); extern __m256i _mm512_cvtsepi64_epi32(__m512i); extern __m256i _mm512_mask_cvtsepi64_epi32(__m256i, __mmask8, __m512i); extern __m256i _mm512_maskz_cvtsepi64_epi32(__mmask8, __m512i); extern void _mm512_mask_cvtsepi64_storeu_epi32(void*, __mmask8, __m512i); extern __m256i _mm512_cvtusepi64_epi32(__m512i); extern __m256i _mm512_mask_cvtusepi64_epi32(__m256i, __mmask8, __m512i); extern __m256i _mm512_maskz_cvtusepi64_epi32(__mmask8, __m512i); extern void _mm512_mask_cvtusepi64_storeu_epi32(void*, __mmask8, __m512i); extern __m512i _mm512_cvtepu8_epi32(__m128i); extern __m512i _mm512_mask_cvtepu8_epi32(__m512i, __mmask16, __m128i); extern __m512i _mm512_maskz_cvtepu8_epi32(__mmask16, __m128i); extern __m512i _mm512_cvtepu8_epi64(__m128i); extern __m512i _mm512_mask_cvtepu8_epi64(__m512i, __mmask8, __m128i); extern __m512i _mm512_maskz_cvtepu8_epi64(__mmask8, __m128i); extern __m512i _mm512_cvtepu16_epi32(__m256i); extern __m512i _mm512_mask_cvtepu16_epi32(__m512i, __mmask16, __m256i); extern __m512i _mm512_maskz_cvtepu16_epi32(__mmask16, __m256i); extern __m512i _mm512_cvtepu16_epi64(__m128i); extern __m512i _mm512_mask_cvtepu16_epi64(__m512i, __mmask8, __m128i); extern __m512i _mm512_maskz_cvtepu16_epi64(__mmask8, __m128i); extern __m512i _mm512_cvtepu32_epi64(__m256i); extern __m512i _mm512_mask_cvtepu32_epi64(__m512i, __mmask8, __m256i); extern __m512i _mm512_maskz_cvtepu32_epi64(__mmask8, __m256i); extern __m512d _mm512_cvtepi32_pd(__m256i); extern __m512d _mm512_mask_cvtepi32_pd(__m512d, __mmask8, __m256i); extern __m512d _mm512_maskz_cvtepi32_pd(__mmask8, __m256i); extern __m512 _mm512_cvt_roundepi32_ps(__m512i, int); extern __m512 _mm512_mask_cvt_roundepi32_ps(__m512, __mmask16, __m512i, int); extern __m512 _mm512_maskz_cvt_roundepi32_ps(__mmask16, __m512i, int); # 3825 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_cvt_roundepu32_ps(__m512i, int); extern __m512 _mm512_mask_cvt_roundepu32_ps(__m512, __mmask16, __m512i, int); extern __m512 _mm512_maskz_cvt_roundepu32_ps(__mmask16, __m512i, int); # 3838 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_cvtepu32_pd(__m256i); extern __m512d _mm512_mask_cvtepu32_pd(__m512d, __mmask8, __m256i); extern __m512d _mm512_maskz_cvtepu32_pd(__mmask8, __m256i); extern __m512d _mm512_cvt_roundps_pd(__m256, int); extern __m512d _mm512_mask_cvt_roundps_pd(__m512d, __mmask8, __m256, int); extern __m512d _mm512_maskz_cvt_roundps_pd(__mmask8, __m256, int); # 3855 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_cvt_roundps_epi32(__m512, int); extern __m512i _mm512_mask_cvt_roundps_epi32(__m512i, __mmask16, __m512, int); extern __m512i _mm512_maskz_cvt_roundps_epi32(__mmask16, __m512, int); # 3868 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_cvtt_roundps_epi32(__m512, int); extern __m512i _mm512_mask_cvtt_roundps_epi32(__m512i, __mmask16, __m512, int); extern __m512i _mm512_maskz_cvtt_roundps_epi32(__mmask16, __m512, int); # 3882 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_cvt_roundps_epu32(__m512, int); extern __m512i _mm512_mask_cvt_roundps_epu32(__m512i, __mmask16, __m512, int); extern __m512i _mm512_maskz_cvt_roundps_epu32(__mmask16, __m512, int); # 3895 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_cvtt_roundps_epu32(__m512, int); extern __m512i _mm512_mask_cvtt_roundps_epu32(__m512i, __mmask16, __m512, int); extern __m512i _mm512_maskz_cvtt_roundps_epu32(__mmask16, __m512, int); # 3909 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256 _mm512_cvt_roundpd_ps(__m512d, int); extern __m256 _mm512_mask_cvt_roundpd_ps(__m256, __mmask8, __m512d, int); extern __m256 _mm512_maskz_cvt_roundpd_ps(__mmask8, __m512d, int); # 3921 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256i _mm512_cvt_roundpd_epi32(__m512d, int); extern __m256i _mm512_mask_cvt_roundpd_epi32(__m256i, __mmask8, __m512d, int); extern __m256i _mm512_maskz_cvt_roundpd_epi32(__mmask8, __m512d, int); # 3934 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256i _mm512_cvtt_roundpd_epi32(__m512d, int); extern __m256i _mm512_mask_cvtt_roundpd_epi32(__m256i, __mmask8, __m512d, int); extern __m256i _mm512_maskz_cvtt_roundpd_epi32(__mmask8, __m512d, int); # 3947 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256i _mm512_cvt_roundpd_epu32(__m512d, int); extern __m256i _mm512_mask_cvt_roundpd_epu32(__m256i, __mmask8, __m512d, int); extern __m256i _mm512_maskz_cvt_roundpd_epu32(__mmask8, __m512d, int); # 3960 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256i _mm512_cvtt_roundpd_epu32(__m512d, int); extern __m256i _mm512_mask_cvtt_roundpd_epu32(__m256i, __mmask8, __m512d, int); extern __m256i _mm512_maskz_cvtt_roundpd_epu32(__mmask8, __m512d, int); # 3973 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_cvt_roundph_ps(__m256i, int); extern __m512 _mm512_mask_cvt_roundph_ps(__m512, __mmask16, __m256i, int); extern __m512 _mm512_maskz_cvt_roundph_ps(__mmask16, __m256i, int); # 3985 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m256i _mm512_cvt_roundps_ph(__m512, int); extern __m256i _mm512_mask_cvt_roundps_ph(__m256i, __mmask16, __m512, int); extern __m256i _mm512_maskz_cvt_roundps_ph(__mmask16, __m512, int); # 3997 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern int _mm_cvt_roundsd_i32(__m128d, int); extern __int64 _mm_cvt_roundsd_i64(__m128d, int); extern unsigned int _mm_cvt_roundsd_u32(__m128d, int); extern unsigned __int64 _mm_cvt_roundsd_u64(__m128d, int); extern int _mm_cvtt_roundsd_i32(__m128d, int); extern __int64 _mm_cvtt_roundsd_i64(__m128d, int); extern unsigned __int64 _mm_cvtt_roundsd_u64(__m128d, int); extern unsigned int _mm_cvtt_roundsd_u32(__m128d, int); extern __m128d _mm_cvt_roundi64_sd(__m128d, __int64, int); extern __m128d _mm_cvtu32_sd(__m128d, unsigned int); extern __m128d _mm_cvt_roundu64_sd(__m128d, unsigned __int64, int); extern int _mm_cvt_roundss_i32(__m128, int); extern __int64 _mm_cvt_roundss_i64(__m128, int); extern unsigned int _mm_cvt_roundss_u32(__m128, int); extern unsigned __int64 _mm_cvt_roundss_u64(__m128, int); extern __int64 _mm_cvtt_roundss_i64(__m128, int); extern int _mm_cvtt_roundss_i32(__m128, int); extern unsigned __int64 _mm_cvtt_roundss_u64(__m128, int); extern unsigned int _mm_cvtt_roundss_u32(__m128, int); extern __m128 _mm_cvt_roundi32_ss(__m128, int, int); extern __m128 _mm_cvt_roundi64_ss(__m128, __int64, int); extern __m128 _mm_cvt_roundu32_ss(__m128, unsigned int, int); extern __m128 _mm_cvt_roundu64_ss(__m128, unsigned __int64, int); extern __m128d _mm_cvt_roundss_sd(__m128d, __m128, int); extern __m128d _mm_mask_cvt_roundss_sd(__m128d, __mmask8, __m128d, __m128, int); extern __m128d _mm_maskz_cvt_roundss_sd(__mmask8, __m128d, __m128, int); extern __m128 _mm_cvt_roundsd_ss(__m128, __m128d, int); extern __m128 _mm_mask_cvt_roundsd_ss(__m128, __mmask8, __m128, __m128d, int); extern __m128 _mm_maskz_cvt_roundsd_ss(__mmask8, __m128, __m128d, int); extern __m512d _mm512_rcp14_pd(__m512d); extern __m512d _mm512_mask_rcp14_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_maskz_rcp14_pd(__mmask8, __m512d); extern __m512 _mm512_rcp14_ps(__m512); extern __m512 _mm512_mask_rcp14_ps(__m512, __mmask16, __m512); extern __m512 _mm512_maskz_rcp14_ps(__mmask16, __m512); extern __m512d _mm512_roundscale_pd(__m512d, int); extern __m512d _mm512_mask_roundscale_pd(__m512d, __mmask8, __m512d, int); extern __m512d _mm512_maskz_roundscale_pd(__mmask8, __m512d, int); extern __m512d _mm512_roundscale_round_pd(__m512d, int, int); extern __m512d _mm512_mask_roundscale_round_pd(__m512d, __mmask8, __m512d, int, int); extern __m512d _mm512_maskz_roundscale_round_pd(__mmask8, __m512d, int, int); extern __m512 _mm512_roundscale_ps(__m512, int); extern __m512 _mm512_mask_roundscale_ps(__m512, __mmask16, __m512, int); extern __m512 _mm512_maskz_roundscale_ps(__mmask16, __m512, int); extern __m512 _mm512_roundscale_round_ps(__m512, int, int); extern __m512 _mm512_mask_roundscale_round_ps(__m512, __mmask16, __m512, int, int); extern __m512 _mm512_maskz_roundscale_round_ps(__mmask16, __m512, int, int); extern __m128d _mm_roundscale_round_sd(__m128d, __m128d, const int, const int); extern __m128d _mm_mask_roundscale_round_sd(__m128d, __mmask8, __m128d, __m128d, const int, const int); extern __m128d _mm_maskz_roundscale_round_sd(__mmask8, __m128d, __m128d, const int, const int); # 4147 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_roundscale_round_ss(__m128, __m128, const int, const int); extern __m128 _mm_mask_roundscale_round_ss(__m128, __mmask8, __m128, __m128, const int, const int); extern __m128 _mm_maskz_roundscale_round_ss(__mmask8, __m128, __m128, const int, const int); # 4167 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_rsqrt14_pd(__m512d); extern __m512d _mm512_mask_rsqrt14_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_maskz_rsqrt14_pd(__mmask8, __m512d); extern __m512 _mm512_rsqrt14_ps(__m512); extern __m512 _mm512_mask_rsqrt14_ps(__m512, __mmask16, __m512); extern __m512 _mm512_maskz_rsqrt14_ps(__mmask16, __m512); extern __m512d _mm512_scalef_round_pd(__m512d, __m512d, int); extern __m512d _mm512_mask_scalef_round_pd(__m512d, __mmask8, __m512d, __m512d, int); extern __m512d _mm512_maskz_scalef_round_pd(__mmask8, __m512d, __m512d, int); # 4189 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_scalef_round_ps(__m512, __m512, int); extern __m512 _mm512_mask_scalef_round_ps(__m512, __mmask16, __m512, __m512, int); extern __m512 _mm512_maskz_scalef_round_ps(__mmask16, __m512, __m512, int); # 4202 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_mask_compress_epi32(__m512i, __mmask16, __m512i); extern __m512i _mm512_maskz_compress_epi32(__mmask16, __m512i); extern __m512i _mm512_mask_compress_epi64(__m512i, __mmask8, __m512i); extern __m512i _mm512_maskz_compress_epi64(__mmask8, __m512i); extern __m512d _mm512_mask_compress_pd(__m512d, __mmask8, __m512d); extern __m512d _mm512_maskz_compress_pd(__mmask8, __m512d); extern __m512 _mm512_mask_compress_ps(__m512, __mmask16, __m512); extern __m512 _mm512_maskz_compress_ps(__mmask16, __m512); extern void _mm512_mask_compressstoreu_epi32(void*, __mmask16, __m512i); extern void _mm512_mask_compressstoreu_epi64(void*, __mmask8, __m512i); extern void _mm512_mask_compressstoreu_pd(void*, __mmask8, __m512d); extern void _mm512_mask_compressstoreu_ps(void*, __mmask16, __m512); extern __m512d _mm512_fixupimm_pd(__m512d, __m512d, __m512i, int); extern __m512d _mm512_mask_fixupimm_pd(__m512d, __mmask8, __m512d, __m512i, int); extern __m512d _mm512_maskz_fixupimm_pd(__mmask8, __m512d, __m512d, __m512i, int); extern __m512d _mm512_fixupimm_round_pd(__m512d, __m512d, __m512i, int, int); extern __m512d _mm512_mask_fixupimm_round_pd(__m512d, __mmask8, __m512d, __m512i, int, int); extern __m512d _mm512_maskz_fixupimm_round_pd(__mmask8, __m512d, __m512d, __m512i, int, int); extern __m512 _mm512_fixupimm_ps(__m512, __m512, __m512i, int); extern __m512 _mm512_mask_fixupimm_ps(__m512, __mmask16, __m512, __m512i, int); extern __m512 _mm512_maskz_fixupimm_ps(__mmask16, __m512, __m512, __m512i, int); extern __m512 _mm512_fixupimm_round_ps(__m512, __m512, __m512i, int, int); extern __m512 _mm512_mask_fixupimm_round_ps(__m512, __mmask16, __m512, __m512i, int, int); extern __m512 _mm512_maskz_fixupimm_round_ps(__mmask16, __m512, __m512, __m512i, int, int); extern __m128d _mm_fixupimm_round_sd(__m128d, __m128d, __m128i, int, int); extern __m128d _mm_mask_fixupimm_round_sd(__m128d, __mmask8, __m128d, __m128i, int, int); extern __m128d _mm_maskz_fixupimm_round_sd(__mmask8, __m128d, __m128d, __m128i, int, int); # 4271 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_fixupimm_round_ss(__m128, __m128, __m128i, int, int); extern __m128 _mm_mask_fixupimm_round_ss(__m128, __mmask8, __m128, __m128i, int, int); extern __m128 _mm_maskz_fixupimm_round_ss(__mmask8, __m128, __m128, __m128i, int, int); # 4290 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_getmant_round_pd(__m512d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512d _mm512_mask_getmant_round_pd(__m512d, __mmask8, __m512d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512d _mm512_maskz_getmant_round_pd(__mmask8, __m512d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512 _mm512_getmant_round_ps(__m512, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512 _mm512_mask_getmant_round_ps(__m512, __mmask16, __m512, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512 _mm512_maskz_getmant_round_ps(__mmask16, __m512, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128d _mm_getmant_round_sd(__m128d, __m128d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128d _mm_mask_getmant_round_sd(__m128d, __mmask8, __m128d, __m128d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128d _mm_maskz_getmant_round_sd(__mmask8, __m128d, __m128d, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128 _mm_getmant_round_ss(__m128, __m128, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128 _mm_mask_getmant_round_ss(__m128, __mmask8, __m128, __m128, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m128 _mm_maskz_getmant_round_ss(__mmask8, __m128, __m128, _MM_MANTISSA_NORM_ENUM, _MM_MANTISSA_SIGN_ENUM, int); extern __m512i _mm512_ternarylogic_epi32(__m512i, __m512i, __m512i, int); extern __m512i _mm512_mask_ternarylogic_epi32(__m512i, __mmask16, __m512i, __m512i, int); extern __m512i _mm512_maskz_ternarylogic_epi32(__mmask16, __m512i, __m512i, __m512i, int); extern __m512i _mm512_ternarylogic_epi64(__m512i, __m512i, __m512i, int); extern __m512i _mm512_mask_ternarylogic_epi64(__m512i, __mmask8, __m512i, __m512i, int); extern __m512i _mm512_maskz_ternarylogic_epi64(__mmask8, __m512i, __m512i, __m512i, int); extern __m512d _mm512_maskz_fmadd_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); extern __m512 _mm512_maskz_fmadd_round_ps(__mmask16, __m512, __m512, __m512, const int); extern __m512d _mm512_fmaddsub_round_pd(__m512d, __m512d, __m512d, const int); extern __m512d _mm512_mask_fmaddsub_round_pd(__m512d, __mmask8, __m512d, __m512d, const int); extern __m512d _mm512_mask3_fmaddsub_round_pd(__m512d, __m512d, __m512d, __mmask8, const int); extern __m512d _mm512_maskz_fmaddsub_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); # 4437 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_fmaddsub_round_ps(__m512, __m512, __m512, const int); extern __m512 _mm512_mask_fmaddsub_round_ps(__m512, __mmask16, __m512, __m512, const int); extern __m512 _mm512_mask3_fmaddsub_round_ps(__m512, __m512, __m512, __mmask16, const int); extern __m512 _mm512_maskz_fmaddsub_round_ps(__mmask16, __m512, __m512, __m512, const int); # 4463 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_maskz_fmsub_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); extern __m512 _mm512_maskz_fmsub_round_ps(__mmask16, __m512, __m512, __m512, const int); extern __m512d _mm512_fmsubadd_round_pd(__m512d, __m512d, __m512d, const int); extern __m512d _mm512_mask_fmsubadd_round_pd(__m512d, __mmask8, __m512d, __m512d, const int); extern __m512d _mm512_mask3_fmsubadd_round_pd(__m512d, __m512d, __m512d, __mmask8, const int); extern __m512d _mm512_maskz_fmsubadd_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); # 4502 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512 _mm512_fmsubadd_round_ps(__m512, __m512, __m512, const int); extern __m512 _mm512_mask_fmsubadd_round_ps(__m512, __mmask16, __m512, __m512, const int); extern __m512 _mm512_mask3_fmsubadd_round_ps(__m512, __m512, __m512, __mmask16, const int); extern __m512 _mm512_maskz_fmsubadd_round_ps(__mmask16, __m512, __m512, __m512, const int); # 4528 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512d _mm512_maskz_fnmadd_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); extern __m512 _mm512_maskz_fnmadd_round_ps(__mmask16, __m512, __m512, __m512, const int); extern __m512d _mm512_maskz_fnmsub_round_pd(__mmask8, __m512d, __m512d, __m512d, const int); extern __m512 _mm512_maskz_fnmsub_round_ps(__mmask16, __m512, __m512, __m512, const int); extern __m128 _mm_mask_fmadd_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_fmadd_round_ss(__mmask8, __m128, __m128, __m128, int); extern __m128 _mm_mask3_fmadd_round_ss(__m128, __m128, __m128, __mmask8, int); # 4570 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_mask_fmadd_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_fmadd_round_sd(__mmask8, __m128d, __m128d, __m128d, int); extern __m128d _mm_mask3_fmadd_round_sd(__m128d, __m128d, __m128d, __mmask8, int); # 4587 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_mask_fmsub_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_fmsub_round_ss(__mmask8, __m128, __m128, __m128, int); extern __m128 _mm_mask3_fmsub_round_ss(__m128, __m128, __m128, __mmask8, int); # 4603 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_mask_fmsub_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_fmsub_round_sd(__mmask8, __m128d, __m128d, __m128d, int); extern __m128d _mm_mask3_fmsub_round_sd(__m128d, __m128d, __m128d, __mmask8, int); # 4620 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_mask_fnmadd_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_fnmadd_round_ss(__mmask8, __m128, __m128, __m128, int); extern __m128 _mm_mask3_fnmadd_round_ss(__m128, __m128, __m128, __mmask8, int); # 4636 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_mask_fnmadd_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_fnmadd_round_sd(__mmask8, __m128d, __m128d, __m128d, int); extern __m128d _mm_mask3_fnmadd_round_sd(__m128d, __m128d, __m128d, __mmask8, int); # 4655 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_mask_fnmsub_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_fnmsub_round_ss(__mmask8, __m128, __m128, __m128, int); extern __m128 _mm_mask3_fnmsub_round_ss(__m128, __m128, __m128, __mmask8, int); # 4671 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128d _mm_mask_fnmsub_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_fnmsub_round_sd(__mmask8, __m128d, __m128d, __m128d, int); extern __m128d _mm_mask3_fnmsub_round_sd(__m128d, __m128d, __m128d, __mmask8, int); # 4690 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm512_extractf32x4_ps(__m512, int); extern __m256d _mm512_extractf64x4_pd(__m512d, int); extern __m128i _mm512_extracti32x4_epi32(__m512i, int); extern __m256i _mm512_extracti64x4_epi64(__m512i, int); extern __m128 _mm512_mask_extractf32x4_ps(__m128, __mmask8, __m512, int); extern __m128 _mm512_maskz_extractf32x4_ps(__mmask8, __m512, int); extern __m256d _mm512_mask_extractf64x4_pd(__m256d, __mmask8, __m512d, int); extern __m256d _mm512_maskz_extractf64x4_pd(__mmask8, __m512d, int); extern __m128i _mm512_mask_extracti32x4_epi32(__m128i, __mmask8, __m512i, int); extern __m128i _mm512_maskz_extracti32x4_epi32(__mmask8, __m512i, int); extern __m256i _mm512_mask_extracti64x4_epi64(__m256i, __mmask8, __m512i, int); extern __m256i _mm512_maskz_extracti64x4_epi64(__mmask8, __m512i, int); extern __m512 _mm512_insertf32x4(__m512, __m128, int); extern __m512d _mm512_insertf64x4(__m512d, __m256d, int); extern __m512i _mm512_inserti32x4(__m512i, __m128i, int); extern __m512i _mm512_inserti64x4(__m512i, __m256i, int); extern __m512 _mm512_mask_insertf32x4(__m512, __mmask16, __m512, __m128, int); extern __m512 _mm512_maskz_insertf32x4(__mmask16, __m512, __m128, int); extern __m512d _mm512_mask_insertf64x4(__m512d, __mmask8, __m512d, __m256d, int); extern __m512d _mm512_maskz_insertf64x4(__mmask8, __m512d, __m256d, int); extern __m512i _mm512_mask_inserti32x4(__m512i, __mmask16, __m512i, __m128i, int); extern __m512i _mm512_maskz_inserti32x4(__mmask16, __m512i, __m128i, int); extern __m512i _mm512_mask_inserti64x4(__m512i, __mmask8, __m512i, __m256i, int); extern __m512i _mm512_maskz_inserti64x4(__mmask8, __m512i, __m256i, int); extern __m512i _mm512_maskz_max_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_max_epu32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_min_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_min_epu32(__mmask16, __m512i, __m512i); extern __m512i _mm512_max_epi64(__m512i, __m512i); extern __m512i _mm512_mask_max_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_max_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_max_epu64(__m512i, __m512i); extern __m512i _mm512_mask_max_epu64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_max_epu64(__mmask8, __m512i, __m512i); extern __m512i _mm512_min_epi64(__m512i, __m512i); extern __m512i _mm512_mask_min_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_min_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_min_epu64(__m512i, __m512i); extern __m512i _mm512_mask_min_epu64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_min_epu64(__mmask8, __m512i, __m512i); extern __m512d _mm512_max_round_pd(__m512d, __m512d, int); extern __m512d _mm512_mask_max_round_pd(__m512d, __mmask8, __m512d, __m512d, int); extern __m512d _mm512_maskz_max_round_pd(__mmask8, __m512d, __m512d, int); extern __m512d _mm512_min_round_pd(__m512d, __m512d, int); extern __m512d _mm512_mask_min_round_pd(__m512d, __mmask8, __m512d, __m512d, int); extern __m512d _mm512_maskz_min_round_pd(__mmask8, __m512d, __m512d, int); extern __m512 _mm512_max_round_ps(__m512, __m512, int); extern __m512 _mm512_mask_max_round_ps(__m512, __mmask16, __m512, __m512, int); extern __m512 _mm512_maskz_max_round_ps(__mmask16, __m512, __m512, int); extern __m512 _mm512_min_round_ps(__m512, __m512, int); extern __m512 _mm512_mask_min_round_ps(__m512, __mmask16, __m512, __m512, int); extern __m512 _mm512_maskz_min_round_ps(__mmask16, __m512, __m512, int); extern __m512d _mm512_maskz_add_round_pd(__mmask8, __m512d, __m512d, int); extern __m512 _mm512_maskz_add_round_ps(__mmask16, __m512, __m512, int); extern __m512d _mm512_div_round_pd(__m512d, __m512d, int); extern __m512d _mm512_mask_div_round_pd(__m512d, __mmask8, __m512d, __m512d, int); extern __m512d _mm512_maskz_div_round_pd(__mmask8, __m512d, __m512d, int); extern __m512 _mm512_div_round_ps(__m512, __m512, int); extern __m512 _mm512_mask_div_round_ps(__m512, __mmask16, __m512, __m512, int); extern __m512 _mm512_maskz_div_round_ps(__mmask16, __m512, __m512, int); extern __m512d _mm512_maskz_mul_round_pd(__mmask8, __m512d, __m512d, int); extern __m512 _mm512_maskz_mul_round_ps(__mmask16, __m512, __m512, int); extern __m512d _mm512_maskz_sub_round_pd(__mmask8, __m512d, __m512d, int); extern __m512 _mm512_maskz_sub_round_ps(__mmask16, __m512, __m512, int); extern __int64 _mm512_reduce_add_epi64(__m512i); extern __int64 _mm512_mask_reduce_add_epi64(__mmask8, __m512i); extern __int64 _mm512_reduce_mul_epi64(__m512i); extern __int64 _mm512_mask_reduce_mul_epi64(__mmask8, __m512i); extern __int64 _mm512_reduce_min_epi64(__m512i); extern __int64 _mm512_mask_reduce_min_epi64(__mmask8, __m512i); extern unsigned __int64 _mm512_reduce_min_epu64(__m512i); extern unsigned __int64 _mm512_mask_reduce_min_epu64(__mmask8, __m512i); extern __int64 _mm512_reduce_max_epi64(__m512i); extern __int64 _mm512_mask_reduce_max_epi64(__mmask8, __m512i); extern unsigned __int64 _mm512_reduce_max_epu64(__m512i); extern unsigned __int64 _mm512_mask_reduce_max_epu64(__mmask8, __m512i); extern __int64 _mm512_reduce_or_epi64(__m512i); extern __int64 _mm512_mask_reduce_or_epi64(__mmask8, __m512i); extern __int64 _mm512_reduce_and_epi64(__m512i); extern __int64 _mm512_mask_reduce_and_epi64(__mmask8, __m512i); extern __m128d _mm_scalef_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_scalef_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_scalef_round_sd(__mmask8, __m128d, __m128d, int); # 4945 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_scalef_round_ss(__m128, __m128, int); extern __m128 _mm_mask_scalef_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_scalef_round_ss(__mmask8, __m128, __m128, int); # 4959 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_set1_epi8(char); extern __m512i _mm512_set1_epi16(short); extern __m512i _mm512_mask_set1_epi32(__m512i, __mmask16, int); extern __m512i _mm512_maskz_set1_epi32(__mmask16, int); extern __m512i _mm512_mask_set1_epi64(__m512i, __mmask8, __int64); extern __m512i _mm512_maskz_set1_epi64(__mmask8, __int64); extern __m512d _mm512_sqrt_round_pd(__m512d, int ); extern __m512d _mm512_mask_sqrt_round_pd(__m512d, __mmask8, __m512d, int ); extern __m512d _mm512_maskz_sqrt_round_pd(__mmask8, __m512d, int ); extern __m512 _mm512_sqrt_round_ps(__m512, int ); extern __m512 _mm512_mask_sqrt_round_ps(__m512, __mmask16, __m512, int ); extern __m512 _mm512_maskz_sqrt_round_ps(__mmask16, __m512, int ); extern __m128d _mm_sqrt_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_sqrt_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_sqrt_round_sd(__mmask8, __m128d, __m128d, int); # 4998 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m128 _mm_sqrt_round_ss(__m128, __m128, int); extern __m128 _mm_mask_sqrt_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_sqrt_round_ss(__mmask8, __m128, __m128, int); # 5010 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/zmmintrin.h" 3 extern __m512i _mm512_maskz_sub_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_sub_epi64(__m512i, __m512i); extern __m512i _mm512_mask_sub_epi64(__m512i, __mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_sub_epi64(__mmask8, __m512i, __m512i); extern __m512i _mm512_maskz_xor_epi32(__mmask16, __m512i, __m512i); extern __m512i _mm512_maskz_xor_epi64(__mmask8, __m512i, __m512i); extern __mmask16 _mm512_kunpackb(__mmask16, __mmask16); extern __m512i _mm512_broadcastmb_epi64(__mmask8); extern __m512i _mm512_broadcastmw_epi32(__mmask16); extern __m512i _mm512_conflict_epi32(__m512i); extern __m512i _mm512_mask_conflict_epi32(__m512i, __mmask16, __m512i); extern __m512i _mm512_maskz_conflict_epi32(__mmask16, __m512i); extern __m512i _mm512_conflict_epi64(__m512i); extern __m512i _mm512_mask_conflict_epi64(__m512i, __mmask8, __m512i); extern __m512i _mm512_maskz_conflict_epi64(__mmask8, __m512i); extern __m512i _mm512_lzcnt_epi32(__m512i); extern __m512i _mm512_mask_lzcnt_epi32(__m512i, __mmask16, __m512i); extern __m512i _mm512_maskz_lzcnt_epi32(__mmask16, __m512i); extern __m512i _mm512_lzcnt_epi64(__m512i); extern __m512i _mm512_mask_lzcnt_epi64(__m512i, __mmask8, __m512i); extern __m512i _mm512_maskz_lzcnt_epi64(__mmask8, __m512i); extern __mmask16 _mm512_testn_epi32_mask(__m512i, __m512i); extern __mmask16 _mm512_mask_testn_epi32_mask(__mmask16, __m512i, __m512i); extern __mmask8 _mm512_testn_epi64_mask(__m512i, __m512i); extern __mmask8 _mm512_mask_testn_epi64_mask(__mmask8, __m512i, __m512i); extern __m512 _mm512_exp2a23_round_ps(__m512, int); extern __m512 _mm512_mask_exp2a23_round_ps(__m512, __mmask16, __m512, int); extern __m512 _mm512_maskz_exp2a23_round_ps(__mmask16, __m512, int); extern __m512d _mm512_exp2a23_round_pd(__m512d, int); extern __m512d _mm512_mask_exp2a23_round_pd(__m512d, __mmask8, __m512d, int); extern __m512d _mm512_maskz_exp2a23_round_pd(__mmask8, __m512d, int); extern __m128d _mm_rcp28_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_rcp28_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_rcp28_round_sd(__mmask8, __m128d, __m128d, int); extern __m128 _mm_rcp28_round_ss(__m128, __m128, int); extern __m128 _mm_mask_rcp28_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_rcp28_round_ss(__mmask8, __m128, __m128, int); extern __m512 _mm512_rcp28_round_ps(__m512, int); extern __m512 _mm512_mask_rcp28_round_ps(__m512, __mmask16, __m512, int); extern __m512 _mm512_maskz_rcp28_round_ps(__mmask16, __m512, int); extern __m512d _mm512_rcp28_round_pd(__m512d, int); extern __m512d _mm512_mask_rcp28_round_pd(__m512d, __mmask8, __m512d, int); extern __m512d _mm512_maskz_rcp28_round_pd(__mmask8, __m512d, int); extern __m128d _mm_rsqrt28_round_sd(__m128d, __m128d, int); extern __m128d _mm_mask_rsqrt28_round_sd(__m128d, __mmask8, __m128d, __m128d, int); extern __m128d _mm_maskz_rsqrt28_round_sd(__mmask8, __m128d, __m128d, int); extern __m128 _mm_rsqrt28_round_ss(__m128, __m128, int); extern __m128 _mm_mask_rsqrt28_round_ss(__m128, __mmask8, __m128, __m128, int); extern __m128 _mm_maskz_rsqrt28_round_ss(__mmask8, __m128, __m128, int); extern __m512 _mm512_rsqrt28_round_ps(__m512, int); extern __m512 _mm512_mask_rsqrt28_round_ps(__m512, __mmask16, __m512, int); extern __m512 _mm512_maskz_rsqrt28_round_ps(__mmask16, __m512, int); extern __m512d _mm512_rsqrt28_round_pd(__m512d, int); extern __m512d _mm512_mask_rsqrt28_round_pd(__m512d, __mmask8, __m512d, int); extern __m512d _mm512_maskz_rsqrt28_round_pd(__mmask8, __m512d, int); extern void _mm512_prefetch_i64gather_ps(__m512i, void const*, int , int ); extern void _mm512_mask_prefetch_i64gather_ps(__m512i , __mmask8, void const*, int , int ); extern void _mm512_prefetch_i64scatter_ps(void*, __m512i, int , int ); extern void _mm512_mask_prefetch_i64scatter_ps(void*, __mmask8, __m512i, int , int ); extern void _mm512_prefetch_i32gather_pd(__m256i, void const*, int , int ); extern void _mm512_mask_prefetch_i32gather_pd(__m256i , __mmask8, void const*, int , int ); extern void _mm512_prefetch_i32scatter_pd(void*, __m256i, int , int ); extern void _mm512_mask_prefetch_i32scatter_pd(void*, __mmask8, __m256i, int , int ); extern void _mm512_prefetch_i64gather_pd(__m512i, void const*, int , int ); extern void _mm512_mask_prefetch_i64gather_pd(__m512i , __mmask8, void const*, int , int ); extern void _mm512_prefetch_i64scatter_pd(void*, __m512i, int , int ); extern void _mm512_mask_prefetch_i64scatter_pd(void*, __mmask8, __m512i, int , int ); }; # 2306 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/immintrin.h" 2 3 # 22 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/ia32intrin.h" 2 3 # 28 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/x86intrin.h" 2 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/adxintrin.h" 1 3 extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _addcarryx_u32 (unsigned char __CF, unsigned int __X, unsigned int __Y, unsigned int *__P) { return __builtin_ia32_addcarryx_u32 (__CF, __X, __Y, __P); } extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _addcarryx_u64 (unsigned char __CF, unsigned long __X, unsigned long __Y, unsigned long long *__P) { return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P); } # 121 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/x86intrin.h" 2 3 # 34 "/usr/include/c++/4.8/x86_64-suse-linux/bits/opt_random.h" 2 3 # 37 "/usr/include/c++/4.8/x86_64-suse-linux/bits/opt_random.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { # 213 "/usr/include/c++/4.8/x86_64-suse-linux/bits/opt_random.h" 3 } # 52 "/usr/include/c++/4.8/random" 2 3 # 1 "/usr/include/c++/4.8/bits/random.tcc" 1 3 # 1 "/usr/include/c++/4.8/numeric" 1 3 # 59 "/usr/include/c++/4.8/numeric" 3 3 # 1 "/usr/include/c++/4.8/bits/stl_numeric.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template void iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) { ; for (; __first != __last; ++__first) { *__first = __value; ++__value; } } } namespace std __attribute__ ((__visibility__ ("default"))) { template inline _Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) { ; for (; __first != __last; ++__first) __init = __init + *__first; return __init; } template inline _Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op) { ; for (; __first != __last; ++__first) __init = __binary_op(__init, *__first); return __init; } template inline _Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init) { ; for (; __first1 != __last1; ++__first1, ++__first2) __init = __init + (*__first1 * *__first2); return __init; } template 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; } template _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; } template _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; } template _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; } template _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 "/usr/include/c++/4.8/numeric" 2 3 # 34 "/usr/include/c++/4.8/bits/random.tcc" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { namespace __detail { template _Tp _Mod<_Tp, __m, __a, __c, false, true>:: __calc(_Tp __x) { if (__a == 1) __x %= __m; else { static const _Tp __q = __m / __a; static const _Tp __r = __m % __a; _Tp __t1 = __a * (__x % __q); _Tp __t2 = __r * (__x / __q); if (__t1 >= __t2) __x = __t1 - __t2; else __x = __m - __t2 + __t1; } if (__c != 0) { const _Tp __d = __m - __x; if (__d > __c) __x += __c; else __x = __c - __d; } return __x; } template _OutputIterator __normalize(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __factor) { for (; __first != __last; ++__first, ++__result) *__result = *__first / __factor; return __result; } } template constexpr _UIntType linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; template constexpr _UIntType linear_congruential_engine<_UIntType, __a, __c, __m>::increment; template constexpr _UIntType linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; template constexpr _UIntType linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; template void linear_congruential_engine<_UIntType, __a, __c, __m>:: seed(result_type __s) { if ((__detail::__mod<_UIntType, __m>(__c) == 0) && (__detail::__mod<_UIntType, __m>(__s) == 0)) _M_x = 1; else _M_x = __detail::__mod<_UIntType, __m>(__s); } template template typename std::enable_if::value>::type linear_congruential_engine<_UIntType, __a, __c, __m>:: seed(_Sseq& __q) { const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits : std::__lg(__m); const _UIntType __k = (__k0 + 31) / 32; uint_least32_t __arr[__k + 3]; __q.generate(__arr + 0, __arr + __k + 3); _UIntType __factor = 1u; _UIntType __sum = 0u; for (size_t __j = 0; __j < __k; ++__j) { __sum += __arr[__j + 3] * __factor; __factor *= __detail::_Shift<_UIntType, 32>::__value; } seed(__sum); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__os.widen(' ')); __os << __lcr._M_x; __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec); __is >> __lcr._M_x; __is.flags(__flags); return __is; } template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::word_size; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::state_size; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::shift_size; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::mask_bits; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::xor_mask; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_u; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_d; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_s; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_b; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_t; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_c; template constexpr size_t mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::tempering_l; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: initialization_multiplier; template constexpr _UIntType mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::default_seed; template void mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: seed(result_type __sd) { _M_x[0] = __detail::__mod<_UIntType, __detail::_Shift<_UIntType, __w>::__value>(__sd); for (size_t __i = 1; __i < state_size; ++__i) { _UIntType __x = _M_x[__i - 1]; __x ^= __x >> (__w - 2); __x *= __f; __x += __detail::__mod<_UIntType, __n>(__i); _M_x[__i] = __detail::__mod<_UIntType, __detail::_Shift<_UIntType, __w>::__value>(__x); } _M_p = state_size; } template template typename std::enable_if::value>::type mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: seed(_Sseq& __q) { const _UIntType __upper_mask = (~_UIntType()) << __r; const size_t __k = (__w + 31) / 32; uint_least32_t __arr[__n * __k]; __q.generate(__arr + 0, __arr + __n * __k); bool __zero = true; for (size_t __i = 0; __i < state_size; ++__i) { _UIntType __factor = 1u; _UIntType __sum = 0u; for (size_t __j = 0; __j < __k; ++__j) { __sum += __arr[__k * __i + __j] * __factor; __factor *= __detail::_Shift<_UIntType, 32>::__value; } _M_x[__i] = __detail::__mod<_UIntType, __detail::_Shift<_UIntType, __w>::__value>(__sum); if (__zero) { if (__i == 0) { if ((_M_x[0] & __upper_mask) != 0u) __zero = false; } else if (_M_x[__i] != 0u) __zero = false; } } if (__zero) _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; _M_p = state_size; } template void mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: _M_gen_rand(void) { const _UIntType __upper_mask = (~_UIntType()) << __r; const _UIntType __lower_mask = ~__upper_mask; for (size_t __k = 0; __k < (__n - __m); ++__k) { _UIntType __y = ((_M_x[__k] & __upper_mask) | (_M_x[__k + 1] & __lower_mask)); _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) ^ ((__y & 0x01) ? __a : 0)); } for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) { _UIntType __y = ((_M_x[__k] & __upper_mask) | (_M_x[__k + 1] & __lower_mask)); _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) ^ ((__y & 0x01) ? __a : 0)); } _UIntType __y = ((_M_x[__n - 1] & __upper_mask) | (_M_x[0] & __lower_mask)); _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) ^ ((__y & 0x01) ? __a : 0)); _M_p = 0; } template void mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: discard(unsigned long long __z) { while (__z > state_size - _M_p) { __z -= state_size - _M_p; _M_gen_rand(); } _M_p += __z; } template typename mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>::result_type mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>:: operator()() { 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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__space); for (size_t __i = 0; __i < __n; ++__i) __os << __x._M_x[__i] << __space; __os << __x._M_p; __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); for (size_t __i = 0; __i < __n; ++__i) __is >> __x._M_x[__i]; __is >> __x._M_p; __is.flags(__flags); return __is; } template constexpr size_t subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; template constexpr size_t subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; template constexpr size_t subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; template constexpr _UIntType subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; template void subtract_with_carry_engine<_UIntType, __w, __s, __r>:: seed(result_type __value) { std::linear_congruential_engine __lcg(__value == 0u ? default_seed : __value); const size_t __n = (__w + 31) / 32; for (size_t __i = 0; __i < long_lag; ++__i) { _UIntType __sum = 0u; _UIntType __factor = 1u; for (size_t __j = 0; __j < __n; ++__j) { __sum += __detail::__mod::__value> (__lcg()) * __factor; __factor *= __detail::_Shift<_UIntType, 32>::__value; } _M_x[__i] = __detail::__mod<_UIntType, __detail::_Shift<_UIntType, __w>::__value>(__sum); } _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; _M_p = 0; } template template typename std::enable_if::value>::type subtract_with_carry_engine<_UIntType, __w, __s, __r>:: seed(_Sseq& __q) { const size_t __k = (__w + 31) / 32; uint_least32_t __arr[__r * __k]; __q.generate(__arr + 0, __arr + __r * __k); for (size_t __i = 0; __i < long_lag; ++__i) { _UIntType __sum = 0u; _UIntType __factor = 1u; for (size_t __j = 0; __j < __k; ++__j) { __sum += __arr[__k * __i + __j] * __factor; __factor *= __detail::_Shift<_UIntType, 32>::__value; } _M_x[__i] = __detail::__mod<_UIntType, __detail::_Shift<_UIntType, __w>::__value>(__sum); } _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; _M_p = 0; } template typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: result_type subtract_with_carry_engine<_UIntType, __w, __s, __r>:: operator()() { 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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__space); for (size_t __i = 0; __i < __r; ++__i) __os << __x._M_x[__i] << __space; __os << __x._M_carry << __space << __x._M_p; __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) { typedef std::basic_ostream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); for (size_t __i = 0; __i < __r; ++__i) __is >> __x._M_x[__i]; __is >> __x._M_carry; __is >> __x._M_p; __is.flags(__flags); return __is; } template constexpr size_t discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; template constexpr size_t discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; template typename discard_block_engine<_RandomNumberEngine, __p, __r>::result_type discard_block_engine<_RandomNumberEngine, __p, __r>:: operator()() { if (_M_n >= used_block) { _M_b.discard(block_size - _M_n); _M_n = 0; } ++_M_n; return _M_b(); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const discard_block_engine<_RandomNumberEngine, __p, __r>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__space); __os << __x.base() << __space << __x._M_n; __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, discard_block_engine<_RandomNumberEngine, __p, __r>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); __is >> __x._M_b >> __x._M_n; __is.flags(__flags); return __is; } template typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: result_type independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: operator()() { typedef typename _RandomNumberEngine::result_type _Eresult_type; const _Eresult_type __r = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() ? _M_b.max() - _M_b.min() + 1 : 0); const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; const unsigned __m = __r ? std::__lg(__r) : __edig; typedef typename std::common_type<_Eresult_type, result_type>::type __ctype; const unsigned __cdig = std::numeric_limits<__ctype>::digits; unsigned __n, __n0; __ctype __s0, __s1, __y0, __y1; for (size_t __i = 0; __i < 2; ++__i) { __n = (__w + __m - 1) / __m + __i; __n0 = __n - __w % __n; const unsigned __w0 = __w / __n; __s0 = 0; __s1 = 0; if (__w0 < __cdig) { __s0 = __ctype(1) << __w0; __s1 = __s0 << 1; } __y0 = 0; __y1 = 0; if (__r) { __y0 = __s0 * (__r / __s0); if (__s1) __y1 = __s1 * (__r / __s1); if (__r - __y0 <= __y0 / __n) break; } else break; } result_type __sum = 0; for (size_t __k = 0; __k < __n0; ++__k) { __ctype __u; do __u = _M_b() - _M_b.min(); while (__y0 && __u >= __y0); __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); } for (size_t __k = __n0; __k < __n; ++__k) { __ctype __u; do __u = _M_b() - _M_b.min(); while (__y1 && __u >= __y1); __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); } return __sum; } template constexpr size_t shuffle_order_engine<_RandomNumberEngine, __k>::table_size; template typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type shuffle_order_engine<_RandomNumberEngine, __k>:: operator()() { size_t __j = __k * ((_M_y - _M_b.min()) / (_M_b.max() - _M_b.min() + 1.0L)); _M_y = _M_v[__j]; _M_v[__j] = _M_b(); return _M_y; } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const shuffle_order_engine<_RandomNumberEngine, __k>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); __os.fill(__space); __os << __x.base(); for (size_t __i = 0; __i < __k; ++__i) __os << __space << __x._M_v[__i]; __os << __space << __x._M_y; __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, shuffle_order_engine<_RandomNumberEngine, __k>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); __is >> __x._M_b; for (size_t __i = 0; __i < __k; ++__i) __is >> __x._M_v[__i]; __is >> __x._M_y; __is.flags(__flags); return __is; } template template 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::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) { __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 template 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::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) { __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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const uniform_int_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os << __x.a() << __space << __x.b(); __os.flags(__flags); __os.fill(__fill); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, uniform_int_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _IntType __a, __b; __is >> __a >> __b; __x.param(typename uniform_int_distribution<_IntType>:: param_type(__a, __b)); __is.flags(__flags); return __is; } template template void uniform_real_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); auto __range = __p.b() - __p.a(); while (__f != __t) *__f++ = __aurng() * __range + __p.a(); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const uniform_real_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.a() << __space << __x.b(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, uniform_real_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::skipws); _RealType __a, __b; __is >> __a >> __b; __x.param(typename uniform_real_distribution<_RealType>:: param_type(__a, __b)); __is.flags(__flags); return __is; } template void std::bernoulli_distribution:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); auto __limit = __p.p() * (__aurng.max() - __aurng.min()); while (__f != __t) *__f++ = (__aurng() - __aurng.min()) < __limit; } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const bernoulli_distribution& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__os.widen(' ')); __os.precision(std::numeric_limits::max_digits10); __os << __x.p(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template template typename geometric_distribution<_IntType>::result_type geometric_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { const double __naf = (1 - std::numeric_limits::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 template void geometric_distribution<_IntType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __param) { const double __naf = (1 - std::numeric_limits::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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const geometric_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__os.widen(' ')); __os.precision(std::numeric_limits::max_digits10); __os << __x.p(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, geometric_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::skipws); double __p; __is >> __p; __x.param(typename geometric_distribution<_IntType>::param_type(__p)); __is.flags(__flags); return __is; } template template typename negative_binomial_distribution<_IntType>::result_type negative_binomial_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng) { const double __y = _M_gd(__urng); std::poisson_distribution __poisson(__y); return __poisson(__urng); } template template typename negative_binomial_distribution<_IntType>::result_type negative_binomial_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { typedef typename std::gamma_distribution::param_type param_type; const double __y = _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); std::poisson_distribution __poisson(__y); return __poisson(__urng); } template template void negative_binomial_distribution<_IntType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { while (__f != __t) { const double __y = _M_gd(__urng); std::poisson_distribution __poisson(__y); *__f++ = __poisson(__urng); } } template template void negative_binomial_distribution<_IntType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { typename std::gamma_distribution::param_type __p2(__p.k(), (1.0 - __p.p()) / __p.p()); while (__f != __t) { const double __y = _M_gd(__urng, __p2); std::poisson_distribution __poisson(__y); *__f++ = __poisson(__urng); } } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const negative_binomial_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__os.widen(' ')); __os.precision(std::numeric_limits::max_digits10); __os << __x.k() << __space << __x.p() << __space << __x._M_gd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, negative_binomial_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::skipws); _IntType __k; double __p; __is >> __k >> __p >> __x._M_gd; __x.param(typename negative_binomial_distribution<_IntType>:: param_type(__k, __p)); __is.flags(__flags); return __is; } template void poisson_distribution<_IntType>::param_type:: _M_initialize() { if (_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); } template template typename poisson_distribution<_IntType>::result_type poisson_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); if (__param.mean() >= 12) { double __x; const double __naf = (1 - std::numeric_limits::epsilon()) / 2; const double __thr = std::numeric_limits<_IntType>::max() + __naf; const double __m = std::floor(__param.mean()); 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 template 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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const poisson_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits::max_digits10); __os << __x.mean() << __space << __x._M_nd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, poisson_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::skipws); double __mean; __is >> __mean >> __x._M_nd; __x.param(typename poisson_distribution<_IntType>::param_type(__mean)); __is.flags(__flags); return __is; } template void binomial_distribution<_IntType>::param_type:: _M_initialize() { const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; _M_easy = true; if (_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 template typename binomial_distribution<_IntType>::result_type binomial_distribution<_IntType>:: _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t, double __q) { _IntType __x = 0; double __sum = 0.0; __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); do { if (__t == __x) return __x; const double __e = -std::log(1.0 - __aurng()); __sum += __e / (__t - __x); __x += 1; } while (__sum <= __q); return __x - 1; } template template typename binomial_distribution<_IntType>::result_type binomial_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { result_type __ret; const _IntType __t = __param.t(); const double __p = __param.p(); const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); if (!__param._M_easy) { double __x; const double __naf = (1 - std::numeric_limits::epsilon()) / 2; const double __thr = std::numeric_limits<_IntType>::max() + __naf; const double __np = std::floor(__t * __p12); 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 template 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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const binomial_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits::max_digits10); __os << __x.t() << __space << __x.p() << __space << __x._M_nd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, binomial_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _IntType __t; double __p; __is >> __t >> __p >> __x._M_nd; __x.param(typename binomial_distribution<_IntType>:: param_type(__t, __p)); __is.flags(__flags); return __is; } template template void std::exponential_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); while (__f != __t) *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const exponential_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__os.widen(' ')); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.lambda(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, exponential_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __lambda; __is >> __lambda; __x.param(typename exponential_distribution<_RealType>:: param_type(__lambda)); __is.flags(__flags); return __is; } template template typename normal_distribution<_RealType>::result_type normal_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { result_type __ret; __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); if (_M_saved_available) { _M_saved_available = false; __ret = _M_saved; } else { result_type __x, __y, __r2; do { __x = result_type(2.0) * __aurng() - 1.0; __y = result_type(2.0) * __aurng() - 1.0; __r2 = __x * __x + __y * __y; } while (__r2 > 1.0 || __r2 == 0.0); const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); _M_saved = __x * __mult; _M_saved_available = true; __ret = __y * __mult; } __ret = __ret * __param.stddev() + __param.mean(); return __ret; } template template void normal_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __param) { if (__f == __t) return; if (_M_saved_available) { _M_saved_available = false; *__f++ = _M_saved * __param.stddev() + __param.mean(); if (__f == __t) return; } __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); while (__f + 1 < __t) { result_type __x, __y, __r2; do { __x = result_type(2.0) * __aurng() - 1.0; __y = result_type(2.0) * __aurng() - 1.0; __r2 = __x * __x + __y * __y; } while (__r2 > 1.0 || __r2 == 0.0); const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); *__f++ = __y * __mult * __param.stddev() + __param.mean(); *__f++ = __x * __mult * __param.stddev() + __param.mean(); } if (__f != __t) { result_type __x, __y, __r2; do { __x = result_type(2.0) * __aurng() - 1.0; __y = result_type(2.0) * __aurng() - 1.0; __r2 = __x * __x + __y * __y; } while (__r2 > 1.0 || __r2 == 0.0); const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); _M_saved = __x * __mult; _M_saved_available = true; *__f = __y * __mult * __param.stddev() + __param.mean(); } } template bool operator==(const std::normal_distribution<_RealType>& __d1, const std::normal_distribution<_RealType>& __d2) { if (__d1._M_param == __d2._M_param && __d1._M_saved_available == __d2._M_saved_available) { if (__d1._M_saved_available && __d1._M_saved == __d2._M_saved) return true; else if(!__d1._M_saved_available) return true; else return false; } else return false; } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const normal_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.mean() << __space << __x.stddev() << __space << __x._M_saved_available; if (__x._M_saved_available) __os << __space << __x._M_saved; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, normal_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); double __mean, __stddev; __is >> __mean >> __stddev >> __x._M_saved_available; if (__x._M_saved_available) __is >> __x._M_saved; __x.param(typename normal_distribution<_RealType>:: param_type(__mean, __stddev)); __is.flags(__flags); return __is; } template template void lognormal_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { while (__f != __t) *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const lognormal_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.m() << __space << __x.s() << __space << __x._M_nd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, lognormal_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __m, __s; __is >> __m >> __s >> __x._M_nd; __x.param(typename lognormal_distribution<_RealType>:: param_type(__m, __s)); __is.flags(__flags); return __is; } template template void std::chi_squared_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { while (__f != __t) *__f++ = 2 * _M_gd(__urng); } template template void std::chi_squared_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const typename std::gamma_distribution::param_type& __p) { while (__f != __t) *__f++ = 2 * _M_gd(__urng, __p); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const chi_squared_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.n() << __space << __x._M_gd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, chi_squared_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __n; __is >> __n >> __x._M_gd; __x.param(typename chi_squared_distribution<_RealType>:: param_type(__n)); __is.flags(__flags); return __is; } template template typename cauchy_distribution<_RealType>::result_type cauchy_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); _RealType __u; do __u = __aurng(); while (__u == 0.5); const _RealType __pi = 3.1415926535897932384626433832795029L; return __p.a() + __p.b() * std::tan(__pi * __u); } template template void cauchy_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { const _RealType __pi = 3.1415926535897932384626433832795029L; __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); while (__f != __t) { _RealType __u; do __u = __aurng(); while (__u == 0.5); *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); } } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const cauchy_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.a() << __space << __x.b(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, cauchy_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __a, __b; __is >> __a >> __b; __x.param(typename cauchy_distribution<_RealType>:: param_type(__a, __b)); __is.flags(__flags); return __is; } template template void std::fisher_f_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { while (__f != __t) *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); } template template void std::fisher_f_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { typedef typename std::gamma_distribution::param_type param_type; param_type __p1(__p.m() / 2); param_type __p2(__p.n() / 2); while (__f != __t) *__f++ = ((_M_gd_x(__urng, __p1) * n()) / (_M_gd_y(__urng, __p2) * m())); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const fisher_f_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.m() << __space << __x.n() << __space << __x._M_gd_x << __space << __x._M_gd_y; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, fisher_f_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __m, __n; __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y; __x.param(typename fisher_f_distribution<_RealType>:: param_type(__m, __n)); __is.flags(__flags); return __is; } template template void std::student_t_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng) { while (__f != __t) *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } template template void std::student_t_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { typename std::gamma_distribution::param_type __p2(__p.n() / 2, 2); while (__f != __t) *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const student_t_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, student_t_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __n; __is >> __n >> __x._M_nd >> __x._M_gd; __x.param(typename student_t_distribution<_RealType>::param_type(__n)); __is.flags(__flags); return __is; } template void gamma_distribution<_RealType>::param_type:: _M_initialize() { _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); } template template typename gamma_distribution<_RealType>::result_type gamma_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); result_type __u, __v, __n; const result_type __a1 = (__param._M_malpha - _RealType(1.0) / _RealType(3.0)); do { do { __n = _M_nd(__urng); __v = result_type(1.0) + __param._M_a2 * __n; } while (__v <= 0.0); __v = __v * __v * __v; __u = __aurng(); } while (__u > result_type(1.0) - 0.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 template 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 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const gamma_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.alpha() << __space << __x.beta() << __space << __x._M_nd; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, gamma_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __alpha_val, __beta_val; __is >> __alpha_val >> __beta_val >> __x._M_nd; __x.param(typename gamma_distribution<_RealType>:: param_type(__alpha_val, __beta_val)); __is.flags(__flags); return __is; } template template typename weibull_distribution<_RealType>::result_type weibull_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), result_type(1) / __p.a()); } template template void weibull_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); auto __inv_a = result_type(1) / __p.a(); while (__f != __t) *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), __inv_a); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const weibull_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.a() << __space << __x.b(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, weibull_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __a, __b; __is >> __a >> __b; __x.param(typename weibull_distribution<_RealType>:: param_type(__a, __b)); __is.flags(__flags); return __is; } template template typename extreme_value_distribution<_RealType>::result_type extreme_value_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); return __p.a() - __p.b() * std::log(-std::log(result_type(1) - __aurng())); } template template void extreme_value_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __p) { __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> __aurng(__urng); while (__f != __t) *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) - __aurng())); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const extreme_value_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); __os << __x.a() << __space << __x.b(); __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, extreme_value_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); _RealType __a, __b; __is >> __a >> __b; __x.param(typename extreme_value_distribution<_RealType>:: param_type(__a, __b)); __is.flags(__flags); return __is; } template void discrete_distribution<_IntType>::param_type:: _M_initialize() { if (_M_prob.size() < 2) { _M_prob.clear(); return; } const double __sum = std::accumulate(_M_prob.begin(), _M_prob.end(), 0.0); __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 template discrete_distribution<_IntType>::param_type:: param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) : _M_prob(), _M_cp() { const size_t __n = __nw == 0 ? 1 : __nw; const double __delta = (__xmax - __xmin) / __n; _M_prob.reserve(__n); for (size_t __k = 0; __k < __nw; ++__k) _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); _M_initialize(); } template template typename discrete_distribution<_IntType>::result_type discrete_distribution<_IntType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { if (__param._M_cp.empty()) return result_type(0); __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); const double __p = __aurng(); auto __pos = std::lower_bound(__param._M_cp.begin(), __param._M_cp.end(), __p); return __pos - __param._M_cp.begin(); } template template void discrete_distribution<_IntType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __param) { if (__param._M_cp.empty()) { while (__f != __t) *__f++ = result_type(0); return; } __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); while (__f != __t) { const double __p = __aurng(); auto __pos = std::lower_bound(__param._M_cp.begin(), __param._M_cp.end(), __p); *__f++ = __pos - __param._M_cp.begin(); } } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const discrete_distribution<_IntType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits::max_digits10); std::vector __prob = __x.probabilities(); __os << __prob.size(); for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) __os << __space << *__dit; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, discrete_distribution<_IntType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); size_t __n; __is >> __n; std::vector __prob_vec; __prob_vec.reserve(__n); for (; __n != 0; --__n) { double __prob; __is >> __prob; __prob_vec.push_back(__prob); } __x.param(typename discrete_distribution<_IntType>:: param_type(__prob_vec.begin(), __prob_vec.end())); __is.flags(__flags); return __is; } template void piecewise_constant_distribution<_RealType>::param_type:: _M_initialize() { if (_M_int.size() < 2 || (_M_int.size() == 2 && _M_int[0] == _RealType(0) && _M_int[1] == _RealType(1))) { _M_int.clear(); _M_den.clear(); return; } const double __sum = std::accumulate(_M_den.begin(), _M_den.end(), 0.0); __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), __sum); _M_cp.reserve(_M_den.size()); std::partial_sum(_M_den.begin(), _M_den.end(), std::back_inserter(_M_cp)); _M_cp[_M_cp.size() - 1] = 1.0; for (size_t __k = 0; __k < _M_den.size(); ++__k) _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; } template template piecewise_constant_distribution<_RealType>::param_type:: param_type(_InputIteratorB __bbegin, _InputIteratorB __bend, _InputIteratorW __wbegin) : _M_int(), _M_den(), _M_cp() { if (__bbegin != __bend) { for (;;) { _M_int.push_back(*__bbegin); ++__bbegin; if (__bbegin == __bend) break; _M_den.push_back(*__wbegin); ++__wbegin; } } _M_initialize(); } template template piecewise_constant_distribution<_RealType>::param_type:: param_type(initializer_list<_RealType> __bl, _Func __fw) : _M_int(), _M_den(), _M_cp() { _M_int.reserve(__bl.size()); for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) _M_int.push_back(*__biter); _M_den.reserve(_M_int.size() - 1); for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); _M_initialize(); } template template piecewise_constant_distribution<_RealType>::param_type:: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) : _M_int(), _M_den(), _M_cp() { const size_t __n = __nw == 0 ? 1 : __nw; const _RealType __delta = (__xmax - __xmin) / __n; _M_int.reserve(__n + 1); for (size_t __k = 0; __k <= __nw; ++__k) _M_int.push_back(__xmin + __k * __delta); _M_den.reserve(__n); for (size_t __k = 0; __k < __nw; ++__k) _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); _M_initialize(); } template template typename piecewise_constant_distribution<_RealType>::result_type piecewise_constant_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); const double __p = __aurng(); if (__param._M_cp.empty()) return __p; auto __pos = std::lower_bound(__param._M_cp.begin(), __param._M_cp.end(), __p); const size_t __i = __pos - __param._M_cp.begin(); const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; } template template void piecewise_constant_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __param) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); if (__param._M_cp.empty()) { while (__f != __t) *__f++ = __aurng(); return; } while (__f != __t) { const double __p = __aurng(); auto __pos = std::lower_bound(__param._M_cp.begin(), __param._M_cp.end(), __p); const size_t __i = __pos - __param._M_cp.begin(); const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; *__f++ = (__param._M_int[__i] + (__p - __pref) / __param._M_den[__i]); } } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const piecewise_constant_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); std::vector<_RealType> __int = __x.intervals(); __os << __int.size() - 1; for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) __os << __space << *__xit; std::vector __den = __x.densities(); for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) __os << __space << *__dit; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, piecewise_constant_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); size_t __n; __is >> __n; std::vector<_RealType> __int_vec; __int_vec.reserve(__n + 1); for (size_t __i = 0; __i <= __n; ++__i) { _RealType __int; __is >> __int; __int_vec.push_back(__int); } std::vector __den_vec; __den_vec.reserve(__n); for (size_t __i = 0; __i < __n; ++__i) { double __den; __is >> __den; __den_vec.push_back(__den); } __x.param(typename piecewise_constant_distribution<_RealType>:: param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); __is.flags(__flags); return __is; } template void piecewise_linear_distribution<_RealType>::param_type:: _M_initialize() { if (_M_int.size() < 2 || (_M_int.size() == 2 && _M_int[0] == _RealType(0) && _M_int[1] == _RealType(1) && _M_den[0] == _M_den[1])) { _M_int.clear(); _M_den.clear(); return; } double __sum = 0.0; _M_cp.reserve(_M_int.size() - 1); _M_m.reserve(_M_int.size() - 1); for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) { const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; _M_cp.push_back(__sum); _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); } __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 template piecewise_linear_distribution<_RealType>::param_type:: param_type(_InputIteratorB __bbegin, _InputIteratorB __bend, _InputIteratorW __wbegin) : _M_int(), _M_den(), _M_cp(), _M_m() { for (; __bbegin != __bend; ++__bbegin, ++__wbegin) { _M_int.push_back(*__bbegin); _M_den.push_back(*__wbegin); } _M_initialize(); } template template piecewise_linear_distribution<_RealType>::param_type:: param_type(initializer_list<_RealType> __bl, _Func __fw) : _M_int(), _M_den(), _M_cp(), _M_m() { _M_int.reserve(__bl.size()); _M_den.reserve(__bl.size()); for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) { _M_int.push_back(*__biter); _M_den.push_back(__fw(*__biter)); } _M_initialize(); } template template piecewise_linear_distribution<_RealType>::param_type:: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) : _M_int(), _M_den(), _M_cp(), _M_m() { const size_t __n = __nw == 0 ? 1 : __nw; const _RealType __delta = (__xmax - __xmin) / __n; _M_int.reserve(__n + 1); _M_den.reserve(__n + 1); for (size_t __k = 0; __k <= __nw; ++__k) { _M_int.push_back(__xmin + __k * __delta); _M_den.push_back(__fw(_M_int[__k] + __delta)); } _M_initialize(); } template template typename piecewise_linear_distribution<_RealType>::result_type piecewise_linear_distribution<_RealType>:: operator()(_UniformRandomNumberGenerator& __urng, const param_type& __param) { __detail::_Adaptor<_UniformRandomNumberGenerator, double> __aurng(__urng); const double __p = __aurng(); if (__param._M_cp.empty()) return __p; auto __pos = std::lower_bound(__param._M_cp.begin(), __param._M_cp.end(), __p); const size_t __i = __pos - __param._M_cp.begin(); const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; const double __a = 0.5 * __param._M_m[__i]; const double __b = __param._M_den[__i]; const double __cm = __p - __pref; _RealType __x = __param._M_int[__i]; if (__a == 0) __x += __cm / __b; else { const double __d = __b * __b + 4.0 * __a * __cm; __x += 0.5 * (std::sqrt(__d) - __b) / __a; } return __x; } template template void piecewise_linear_distribution<_RealType>:: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, _UniformRandomNumberGenerator& __urng, const param_type& __param) { while (__f != __t) *__f++ = this->operator()(__urng, __param); } template std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& __os, const piecewise_linear_distribution<_RealType>& __x) { typedef std::basic_ostream<_CharT, _Traits> __ostream_type; typedef typename __ostream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __os.flags(); const _CharT __fill = __os.fill(); const std::streamsize __precision = __os.precision(); const _CharT __space = __os.widen(' '); __os.flags(__ios_base::scientific | __ios_base::left); __os.fill(__space); __os.precision(std::numeric_limits<_RealType>::max_digits10); std::vector<_RealType> __int = __x.intervals(); __os << __int.size() - 1; for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) __os << __space << *__xit; std::vector __den = __x.densities(); for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) __os << __space << *__dit; __os.flags(__flags); __os.fill(__fill); __os.precision(__precision); return __os; } template std::basic_istream<_CharT, _Traits>& operator>>(std::basic_istream<_CharT, _Traits>& __is, piecewise_linear_distribution<_RealType>& __x) { typedef std::basic_istream<_CharT, _Traits> __istream_type; typedef typename __istream_type::ios_base __ios_base; const typename __ios_base::fmtflags __flags = __is.flags(); __is.flags(__ios_base::dec | __ios_base::skipws); size_t __n; __is >> __n; std::vector<_RealType> __int_vec; __int_vec.reserve(__n + 1); for (size_t __i = 0; __i <= __n; ++__i) { _RealType __int; __is >> __int; __int_vec.push_back(__int); } std::vector __den_vec; __den_vec.reserve(__n + 1); for (size_t __i = 0; __i <= __n; ++__i) { double __den; __is >> __den; __den_vec.push_back(__den); } __x.param(typename piecewise_linear_distribution<_RealType>:: param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); __is.flags(__flags); return __is; } template seed_seq::seed_seq(std::initializer_list<_IntType> __il) { for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) _M_v.push_back(__detail::__mod::__value>(*__iter)); } template seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) { for (_InputIterator __iter = __begin; __iter != __end; ++__iter) _M_v.push_back(__detail::__mod::__value>(*__iter)); } template void seed_seq::generate(_RandomAccessIterator __begin, _RandomAccessIterator __end) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _Type; if (__begin == __end) return; std::fill(__begin, __end, _Type(0x8b8b8b8bu)); const size_t __n = __end - __begin; const size_t __s = _M_v.size(); const size_t __t = (__n >= 623) ? 11 : (__n >= 68) ? 7 : (__n >= 39) ? 5 : (__n >= 7) ? 3 : (__n - 1) / 2; const size_t __p = (__n - __t) / 2; const size_t __q = __p + __t; const size_t __m = std::max(size_t(__s + 1), __n); for (size_t __k = 0; __k < __m; ++__k) { _Type __arg = (__begin[__k % __n] ^ __begin[(__k + __p) % __n] ^ __begin[(__k - 1) % __n]); _Type __r1 = __arg ^ (__arg >> 27); __r1 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value>(1664525u * __r1); _Type __r2 = __r1; if (__k == 0) __r2 += __s; else if (__k <= __s) __r2 += __k % __n + _M_v[__k - 1]; else __r2 += __k % __n; __r2 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value>(__r2); __begin[(__k + __p) % __n] += __r1; __begin[(__k + __q) % __n] += __r2; __begin[__k % __n] = __r2; } for (size_t __k = __m; __k < __m + __n; ++__k) { _Type __arg = (__begin[__k % __n] + __begin[(__k + __p) % __n] + __begin[(__k - 1) % __n]); _Type __r3 = __arg ^ (__arg >> 27); __r3 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value>(1566083941u * __r3); _Type __r4 = __r3 - __k % __n; __r4 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value>(__r4); __begin[(__k + __p) % __n] ^= __r3; __begin[(__k + __q) % __n] ^= __r4; __begin[__k % __n] = __r4; } } template _RealType generate_canonical(_UniformRandomNumberGenerator& __urng) { const size_t __b = std::min(static_cast(std::numeric_limits<_RealType>::digits), __bits); const long double __r = static_cast(__urng.max()) - static_cast(__urng.min()) + 1.0L; const size_t __log2r = std::log(__r) / std::log(2.0L); size_t __k = std::max(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; } } # 53 "/usr/include/c++/4.8/random" 2 3 # 66 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 # 1 "/usr/include/c++/4.8/functional" 1 3 # 47 "/usr/include/c++/4.8/functional" 3 3 # 1 "/usr/include/c++/4.8/typeinfo" 1 3 # 33 "/usr/include/c++/4.8/typeinfo" 3 3 #pragma GCC visibility push(default) extern "C++" { namespace __cxxabiv1 { class __class_type_info; } # 79 "/usr/include/c++/4.8/typeinfo" 3 namespace std { class type_info { public: virtual ~type_info(); const char* name() const noexcept { return __name[0] == '*' ? __name + 1 : __name; } # 110 "/usr/include/c++/4.8/typeinfo" 3 bool before(const type_info& __arg) const noexcept { return (__name[0] == '*' && __arg.__name[0] == '*') ? __name < __arg.__name : __builtin_strcmp (__name, __arg.__name) < 0; } bool operator==(const type_info& __arg) const noexcept { return ((__name == __arg.__name) || (__name[0] != '*' && __builtin_strcmp (__name, __arg.__name) == 0)); } # 136 "/usr/include/c++/4.8/typeinfo" 3 bool operator!=(const type_info& __arg) const noexcept { return !operator==(__arg); } size_t hash_code() const noexcept { return _Hash_bytes(name(), __builtin_strlen(name()), static_cast(0xc70f6907UL)); } virtual bool __is_pointer_p() const; virtual bool __is_function_p() const; virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, unsigned __outer) const; virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, void **__obj_ptr) const; protected: const char *__name; explicit type_info(const char *__n): __name(__n) { } private: type_info& operator=(const type_info&); type_info(const type_info&); }; class bad_cast : public exception { public: bad_cast() noexcept { } virtual ~bad_cast() noexcept; virtual const char* what() const noexcept; }; class bad_typeid : public exception { public: bad_typeid () noexcept { } virtual ~bad_typeid() noexcept; virtual const char* what() const noexcept; }; } } #pragma GCC visibility pop # 54 "/usr/include/c++/4.8/functional" 2 3 # 1 "/usr/include/c++/4.8/tuple" 1 3 # 33 "/usr/include/c++/4.8/tuple" 3 3 # 1 "/usr/include/c++/4.8/array" 1 3 # 33 "/usr/include/c++/4.8/array" 3 3 # 1 "/usr/include/c++/4.8/stdexcept" 1 3 # 37 "/usr/include/c++/4.8/stdexcept" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { class logic_error : public exception { string _M_msg; public: explicit logic_error(const string& __arg); virtual ~logic_error() noexcept; virtual const char* what() const noexcept; }; class domain_error : public logic_error { public: explicit domain_error(const string& __arg); virtual ~domain_error() noexcept; }; class invalid_argument : public logic_error { public: explicit invalid_argument(const string& __arg); virtual ~invalid_argument() noexcept; }; class length_error : public logic_error { public: explicit length_error(const string& __arg); virtual ~length_error() noexcept; }; class out_of_range : public logic_error { public: explicit out_of_range(const string& __arg); virtual ~out_of_range() noexcept; }; class runtime_error : public exception { string _M_msg; public: explicit runtime_error(const string& __arg); virtual ~runtime_error() noexcept; virtual const char* what() const noexcept; }; class range_error : public runtime_error { public: explicit range_error(const string& __arg); virtual ~range_error() noexcept; }; class overflow_error : public runtime_error { public: explicit overflow_error(const string& __arg); virtual ~overflow_error() noexcept; }; class underflow_error : public runtime_error { public: explicit underflow_error(const string& __arg); virtual ~underflow_error() noexcept; }; } # 39 "/usr/include/c++/4.8/array" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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]); } }; template struct __array_traits<_Tp, 0> { struct _Type { }; static constexpr _Tp& _S_ref(const _Type&, std::size_t) noexcept { return *static_cast<_Tp*>(nullptr); } }; template struct array { typedef _Tp value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef value_type* iterator; typedef const value_type* const_iterator; typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; 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) { 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(("array::at")); 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(("array::at")), _AT_Type::_S_ref(_M_elems, 0)); } reference front() { return *begin(); } constexpr const_reference front() const { return _AT_Type::_S_ref(_M_elems, 0); } reference back() { return _Nm ? *(end() - 1) : *end(); } constexpr const_reference back() const { return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) : _AT_Type::_S_ref(_M_elems, 0); } pointer data() noexcept { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } const_pointer data() const noexcept { return std::__addressof(_AT_Type::_S_ref(_M_elems, 0)); } }; template inline bool operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return std::equal(__one.begin(), __one.end(), __two.begin()); } template inline bool operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one == __two); } template inline bool operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) { return std::lexicographical_compare(__a.begin(), __a.end(), __b.begin(), __b.end()); } template inline bool operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return __two < __one; } template inline bool operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one > __two); } template inline bool operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one < __two); } template inline void swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) noexcept(noexcept(__one.swap(__two))) { __one.swap(__two); } template constexpr _Tp& get(array<_Tp, _Nm>& __arr) noexcept { static_assert(_Int < _Nm, "index is out of bounds"); return std::__array_traits<_Tp, _Nm>:: _S_ref(__arr._M_elems, _Int); } template constexpr _Tp&& get(array<_Tp, _Nm>&& __arr) noexcept { static_assert(_Int < _Nm, "index is out of bounds"); return std::move(get<_Int>(__arr)); } template 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 class tuple_size; template struct tuple_size> : public integral_constant { }; template class tuple_element; template struct tuple_element<_Int, std::array<_Tp, _Nm>> { static_assert(_Int < _Nm, "index is out of bounds"); typedef _Tp type; }; } # 40 "/usr/include/c++/4.8/tuple" 2 3 # 1 "/usr/include/c++/4.8/bits/uses_allocator.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { struct allocator_arg_t { }; constexpr allocator_arg_t allocator_arg = allocator_arg_t(); template class __has_allocator_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_allocator_type : integral_constant ::type> ::value> { }; template::value> struct __uses_allocator_helper : public false_type { }; template struct __uses_allocator_helper<_Tp, _Alloc, true> : public integral_constant::value> { }; template struct uses_allocator : public integral_constant::value> { }; template struct __uses_allocator_arg : is_constructible<_Tp, _Alloc, _Args...> { static_assert( uses_allocator<_Tp, _Alloc>::value, "uses allocator" ); }; struct __uses_alloc_base { }; struct __uses_alloc0 : __uses_alloc_base { struct _Anything { _Anything(...) { } } _M_a; }; template struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; template struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; template struct __uses_alloc; template struct __uses_alloc : conditional< is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, __uses_alloc1<_Alloc>, __uses_alloc2<_Alloc>>::type { }; template struct __uses_alloc : __uses_alloc0 { }; template struct __uses_alloc_impl : __uses_alloc::value, _Tp, _Alloc, _Args...> { }; template __uses_alloc_impl<_Tp, _Alloc, _Args...> __use_alloc(const _Alloc& __a) { __uses_alloc_impl<_Tp, _Alloc, _Args...> __ret; __ret._M_a = &__a; return __ret; } } # 41 "/usr/include/c++/4.8/tuple" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct __add_c_ref { typedef const _Tp& type; }; template struct __add_c_ref<_Tp&> { typedef _Tp& type; }; template struct __add_ref { typedef _Tp& type; }; template struct __add_ref<_Tp&> { typedef _Tp& type; }; template struct __add_r_ref { typedef _Tp&& type; }; template struct __add_r_ref<_Tp&> { typedef _Tp& type; }; template struct _Head_base; template struct _Head_base<_Idx, _Head, true> : public _Head { constexpr _Head_base() : _Head() { } constexpr _Head_base(const _Head& __h) : _Head(__h) { } template::value>::type> constexpr _Head_base(_UHead&& __h) : _Head(std::forward<_UHead>(__h)) { } _Head_base(__uses_alloc0) : _Head() { } template _Head_base(__uses_alloc1<_Alloc> __a) : _Head(allocator_arg, *__a._M_a) { } template _Head_base(__uses_alloc2<_Alloc> __a) : _Head(*__a._M_a) { } template _Head_base(__uses_alloc0, _UHead&& __uhead) : _Head(std::forward<_UHead>(__uhead)) { } template _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } template _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } static constexpr _Head& _M_head(_Head_base& __b) noexcept { return __b; } static constexpr const _Head& _M_head(const _Head_base& __b) noexcept { return __b; } }; template struct _Head_base<_Idx, _Head, false> { constexpr _Head_base() : _M_head_impl() { } constexpr _Head_base(const _Head& __h) : _M_head_impl(__h) { } template::value>::type> constexpr _Head_base(_UHead&& __h) : _M_head_impl(std::forward<_UHead>(__h)) { } _Head_base(__uses_alloc0) : _M_head_impl() { } template _Head_base(__uses_alloc1<_Alloc> __a) : _M_head_impl(allocator_arg, *__a._M_a) { } template _Head_base(__uses_alloc2<_Alloc> __a) : _M_head_impl(*__a._M_a) { } template _Head_base(__uses_alloc0, _UHead&& __uhead) : _M_head_impl(std::forward<_UHead>(__uhead)) { } template _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } template _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } static constexpr _Head& _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } static constexpr const _Head& _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } _Head _M_head_impl; }; template struct _Tuple_impl; template struct _Tuple_impl<_Idx> { template friend class _Tuple_impl; _Tuple_impl() = default; template _Tuple_impl(allocator_arg_t, const _Alloc&) { } template _Tuple_impl(allocator_arg_t, const _Alloc&, const _Tuple_impl&) { } template _Tuple_impl(allocator_arg_t, const _Alloc&, _Tuple_impl&&) { } protected: void _M_swap(_Tuple_impl&) noexcept { } }; template struct __is_empty_non_tuple : is_empty<_Tp> { }; template struct __is_empty_non_tuple> : false_type { }; template using __empty_not_final = typename conditional<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>::type; template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> { template 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::type> explicit constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) : _Inherited(std::forward<_UTail>(__tail)...), _Base(std::forward<_UHead>(__head)) { } constexpr _Tuple_impl(const _Tuple_impl&) = default; constexpr _Tuple_impl(_Tuple_impl&& __in) noexcept(__and_, is_nothrow_move_constructible<_Inherited>>::value) : _Inherited(std::move(_M_tail(__in))), _Base(std::forward<_Head>(_M_head(__in))) { } template constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } template constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) : _Inherited(std::move (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), _Base(std::forward<_UHead> (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) : _Inherited(__tag, __a), _Base(__use_alloc<_Head>(__a)) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, const _Head& __head, const _Tail&... __tail) : _Inherited(__tag, __a, __tail...), _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } template::type> _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, _UHead&& __head, _UTail&&... __tail) : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), std::forward<_UHead>(__head)) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, const _Tuple_impl& __in) : _Inherited(__tag, __a, _M_tail(__in)), _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, _Tuple_impl&& __in) : _Inherited(__tag, __a, std::move(_M_tail(__in))), _Base(__use_alloc<_Head, _Alloc, _Head>(__a), std::forward<_Head>(_M_head(__in))) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, const _Tuple_impl<_Idx, _UElements...>& __in) : _Inherited(__tag, __a, _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } template _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) : _Inherited(__tag, __a, std::move (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), std::forward<_UHead> (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } _Tuple_impl& operator=(const _Tuple_impl& __in) { _M_head(*this) = _M_head(__in); _M_tail(*this) = _M_tail(__in); return *this; } _Tuple_impl& operator=(_Tuple_impl&& __in) noexcept(__and_, is_nothrow_move_assignable<_Inherited>>::value) { _M_head(*this) = std::forward<_Head>(_M_head(__in)); _M_tail(*this) = std::move(_M_tail(__in)); return *this; } template _Tuple_impl& operator=(const _Tuple_impl<_Idx, _UElements...>& __in) { _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); return *this; } template _Tuple_impl& operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) { _M_head(*this) = std::forward<_UHead> (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); _M_tail(*this) = std::move (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); return *this; } protected: void _M_swap(_Tuple_impl& __in) noexcept(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 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...>::value>::type> explicit constexpr tuple(_UElements&&... __elements) : _Inherited(std::forward<_UElements>(__elements)...) { } constexpr tuple(const tuple&) = default; constexpr tuple(tuple&&) = default; template...>::value>::type> constexpr tuple(const tuple<_UElements...>& __in) : _Inherited(static_cast&>(__in)) { } template...>::value>::type> constexpr tuple(tuple<_UElements...>&& __in) : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a) : _Inherited(__tag, __a) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const _Elements&... __elements) : _Inherited(__tag, __a, __elements...) { } template::type> tuple(allocator_arg_t __tag, const _Alloc& __a, _UElements&&... __elements) : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) : _Inherited(__tag, __a, static_cast(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } template::type> tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple<_UElements...>& __in) : _Inherited(__tag, __a, static_cast&>(__in)) { } template::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::type> tuple& operator=(const tuple<_UElements...>& __in) { static_cast<_Inherited&>(*this) = __in; return *this; } template::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 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, 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, is_convertible>::value>::type> constexpr tuple(const tuple<_U1, _U2>& __in) : _Inherited(static_cast&>(__in)) { } template, is_convertible<_U2, _T2>>::value>::type> constexpr tuple(tuple<_U1, _U2>&& __in) : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } template, is_convertible>::value>::type> constexpr tuple(const pair<_U1, _U2>& __in) : _Inherited(__in.first, __in.second) { } template, is_convertible<_U2, _T2>>::value>::type> constexpr tuple(pair<_U1, _U2>&& __in) : _Inherited(std::forward<_U1>(__in.first), std::forward<_U2>(__in.second)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a) : _Inherited(__tag, __a) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const _T1& __a1, const _T2& __a2) : _Inherited(__tag, __a, __a1, __a2) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) : _Inherited(__tag, __a, std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) : _Inherited(__tag, __a, static_cast(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple<_U1, _U2>& __in) : _Inherited(__tag, __a, static_cast&>(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, const pair<_U1, _U2>& __in) : _Inherited(__tag, __a, __in.first, __in.second) { } template tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) : _Inherited(__tag, __a, std::forward<_U1>(__in.first), std::forward<_U2>(__in.second)) { } tuple& operator=(const tuple& __in) { static_cast<_Inherited&>(*this) = __in; return *this; } tuple& operator=(tuple&& __in) noexcept(is_nothrow_move_assignable<_Inherited>::value) { static_cast<_Inherited&>(*this) = std::move(__in); return *this; } template tuple& operator=(const tuple<_U1, _U2>& __in) { static_cast<_Inherited&>(*this) = __in; return *this; } template tuple& operator=(tuple<_U1, _U2>&& __in) { static_cast<_Inherited&>(*this) = std::move(__in); return *this; } template tuple& operator=(const pair<_U1, _U2>& __in) { this->_M_head(*this) = __in.first; this->_M_tail(*this)._M_head(*this) = __in.second; return *this; } template tuple& operator=(pair<_U1, _U2>&& __in) { this->_M_head(*this) = std::forward<_U1>(__in.first); this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); return *this; } void swap(tuple& __in) noexcept(noexcept(__in._M_swap(__in))) { _Inherited::_M_swap(__in); } }; template struct tuple_element; template struct tuple_element<__i, tuple<_Head, _Tail...> > : tuple_element<__i - 1, tuple<_Tail...> > { }; template struct tuple_element<0, tuple<_Head, _Tail...> > { typedef _Head type; }; template struct tuple_element<__i, const _Tp> { typedef typename add_const::type>::type type; }; template struct tuple_element<__i, volatile _Tp> { typedef typename add_volatile::type>::type type; }; template struct tuple_element<__i, const volatile _Tp> { typedef typename add_cv::type>::type type; }; template struct tuple_size; template struct tuple_size : public integral_constant< typename remove_cv::value)>::type, tuple_size<_Tp>::value> { }; template struct tuple_size : public integral_constant< typename remove_cv::value)>::type, tuple_size<_Tp>::value> { }; template struct tuple_size : public integral_constant< typename remove_cv::value)>::type, tuple_size<_Tp>::value> { }; template struct tuple_size> : public integral_constant { }; template constexpr typename __add_ref<_Head>::type __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } template constexpr typename __add_c_ref<_Head>::type __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } template constexpr typename __add_ref< typename tuple_element<__i, tuple<_Elements...>>::type >::type get(tuple<_Elements...>& __t) noexcept { return __get_helper<__i>(__t); } template constexpr typename __add_c_ref< typename tuple_element<__i, tuple<_Elements...>>::type >::type get(const tuple<_Elements...>& __t) noexcept { return __get_helper<__i>(__t); } template constexpr typename __add_r_ref< typename tuple_element<__i, tuple<_Elements...>>::type >::type get(tuple<_Elements...>&& __t) noexcept { return std::forward>::type&&>(get<__i>(__t)); } template struct __tuple_compare; template struct __tuple_compare<0, __i, __j, _Tp, _Up> { static constexpr bool __eq(const _Tp& __t, const _Up& __u) { return (get<__i>(__t) == get<__i>(__u) && __tuple_compare<0, __i + 1, __j, _Tp, _Up>::__eq(__t, __u)); } static constexpr bool __less(const _Tp& __t, const _Up& __u) { return ((get<__i>(__t) < get<__i>(__u)) || !(get<__i>(__u) < get<__i>(__t)) && __tuple_compare<0, __i + 1, __j, _Tp, _Up>::__less(__t, __u)); } }; template struct __tuple_compare<0, __i, __i, _Tp, _Up> { static constexpr bool __eq(const _Tp&, const _Up&) { return true; } static constexpr bool __less(const _Tp&, const _Up&) { return false; } }; template constexpr bool operator==(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { typedef tuple<_TElements...> _Tp; typedef tuple<_UElements...> _Up; return bool(__tuple_compare::value - tuple_size<_Up>::value, 0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u)); } template constexpr bool operator<(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { typedef tuple<_TElements...> _Tp; typedef tuple<_UElements...> _Up; return bool(__tuple_compare::value - tuple_size<_Up>::value, 0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u)); } template inline constexpr bool operator!=(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { return !(__t == __u); } template inline constexpr bool operator>(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { return __u < __t; } template inline constexpr bool operator<=(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { return !(__u < __t); } template inline constexpr bool operator>=(const tuple<_TElements...>& __t, const tuple<_UElements...>& __u) { return !(__t < __u); } template constexpr tuple::__type...> make_tuple(_Elements&&... __args) { typedef tuple::__type...> __result_type; return __result_type(std::forward<_Elements>(__args)...); } template tuple<_Elements&&...> forward_as_tuple(_Elements&&... __args) noexcept { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } template struct __is_tuple_like_impl : false_type { }; template struct __is_tuple_like_impl> : true_type { }; template struct __is_tuple_like_impl> : true_type { }; template struct __is_tuple_like_impl> : true_type { }; template struct __is_tuple_like : public __is_tuple_like_impl::type>::type>::type { }; template struct _Index_tuple { typedef _Index_tuple<_Indexes..., sizeof...(_Indexes)> __next; }; template 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 struct __make_tuple_impl; template struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> { typedef typename __make_tuple_impl<_Idx + 1, tuple<_Tp..., typename std::tuple_element<_Idx, _Tuple>::type>, _Tuple, _Nm>::__type __type; }; template struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> { typedef tuple<_Tp...> __type; }; template struct __do_make_tuple : public __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> { }; template struct __make_tuple : public __do_make_tuple::type>::type> { }; template struct __combine_tuples; template<> struct __combine_tuples<> { typedef tuple<> __type; }; template struct __combine_tuples> { typedef tuple<_Ts...> __type; }; template struct __combine_tuples, tuple<_T2s...>, _Rem...> { typedef typename __combine_tuples, _Rem...>::__type __type; }; template struct __tuple_cat_result { typedef typename __combine_tuples ::__type...>::__type __type; }; template struct __make_1st_indices; template<> struct __make_1st_indices<> { typedef std::_Index_tuple<> __type; }; template struct __make_1st_indices<_Tp, _Tpls...> { typedef typename std::_Build_index_tuple::type>::value>::__type __type; }; template struct __tuple_concater; template struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> { template static constexpr _Ret _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) { typedef typename __make_1st_indices<_Tpls...>::__type __idx; typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; return __next::_S_do(std::forward<_Tpls>(__tps)..., std::forward<_Us>(__us)..., std::get<_Is>(std::forward<_Tp>(__tp))...); } }; template struct __tuple_concater<_Ret, std::_Index_tuple<>> { template static constexpr _Ret _S_do(_Us&&... __us) { return _Ret(std::forward<_Us>(__us)...); } }; template...>::value>::type> constexpr auto tuple_cat(_Tpls&&... __tpls) -> typename __tuple_cat_result<_Tpls...>::__type { typedef typename __tuple_cat_result<_Tpls...>::__type __ret; typedef typename __make_1st_indices<_Tpls...>::__type __idx; typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; return __concater::_S_do(std::forward<_Tpls>(__tpls)...); } template inline tuple<_Elements&...> tie(_Elements&... __args) noexcept { return tuple<_Elements&...>(__args...); } template inline void swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) noexcept(noexcept(__x.swap(__y))) { __x.swap(__y); } struct _Swallow_assign { template const _Swallow_assign& operator=(const _Tp&) const { return *this; } }; const _Swallow_assign ignore{}; template struct uses_allocator, _Alloc> : true_type { }; template template inline pair<_T1, _T2>:: pair(piecewise_construct_t, tuple<_Args1...> __first, tuple<_Args2...> __second) : pair(__first, __second, typename _Build_index_tuple::__type(), typename _Build_index_tuple::__type()) { } template template inline pair<_T1, _T2>:: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) { } } # 56 "/usr/include/c++/4.8/functional" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class _Mem_fn; template _Mem_fn<_Tp _Class::*> mem_fn(_Tp _Class::*) noexcept; template class __has_result_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_result_type : integral_constant ::type> ::value> { }; template struct _Maybe_get_result_type { }; template struct _Maybe_get_result_type { typedef typename _Functor::result_type result_type; }; template struct _Weak_result_type_impl : _Maybe_get_result_type<__has_result_type<_Functor>::value, _Functor> { }; template struct _Weak_result_type_impl<_Res(_ArgTypes...)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes......)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes...) const> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes......) const> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes...) volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes......) volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes...) const volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(_ArgTypes......) const volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(&)(_ArgTypes......)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res(*)(_ArgTypes......)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......)> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) const> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const volatile> { typedef _Res result_type; }; template struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) const volatile> { typedef _Res result_type; }; template struct _Weak_result_type : _Weak_result_type_impl::type> { }; template struct _Derives_from_unary_function : __sfinae_types { private: template static __one __test(const volatile unary_function<_T1, _Res>*); static __two __test(...); public: static const bool value = sizeof(__test((_Tp*)0)) == 1; }; template struct _Derives_from_binary_function : __sfinae_types { private: template static __one __test(const volatile binary_function<_T1, _T2, _Res>*); static __two __test(...); public: static const bool value = sizeof(__test((_Tp*)0)) == 1; }; template inline typename enable_if< (!is_member_pointer<_Functor>::value && !is_function<_Functor>::value && !is_function::type>::value), typename result_of<_Functor&(_Args&&...)>::type >::type __invoke(_Functor& __f, _Args&&... __args) { return __f(std::forward<_Args>(__args)...); } template inline typename enable_if< (is_member_pointer<_Functor>::value && !is_function<_Functor>::value && !is_function::type>::value), typename result_of<_Functor(_Args&&...)>::type >::type __invoke(_Functor& __f, _Args&&... __args) { return std::mem_fn(__f)(std::forward<_Args>(__args)...); } template inline typename enable_if< (is_pointer<_Functor>::value && is_function::type>::value), typename result_of<_Functor(_Args&&...)>::type >::type __invoke(_Functor __f, _Args&&... __args) { return __f(std::forward<_Args>(__args)...); } template struct _Reference_wrapper_base_impl; template struct _Reference_wrapper_base_impl : _Weak_result_type<_Tp> { }; template struct _Reference_wrapper_base_impl : _Weak_result_type<_Tp> { typedef typename _Tp::argument_type argument_type; }; template struct _Reference_wrapper_base_impl : _Weak_result_type<_Tp> { typedef typename _Tp::first_argument_type first_argument_type; typedef typename _Tp::second_argument_type second_argument_type; }; template struct _Reference_wrapper_base_impl : _Weak_result_type<_Tp> { typedef typename _Tp::argument_type argument_type; typedef typename _Tp::first_argument_type first_argument_type; typedef typename _Tp::second_argument_type second_argument_type; }; template class __has_argument_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_argument_type : integral_constant ::type> ::value> { }; template class __has_first_argument_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_first_argument_type : integral_constant ::type> ::value> { }; template class __has_second_argument_type_helper : __sfinae_types { template struct _Wrap_type { }; template static __one __test(_Wrap_type *); template static __two __test(...); public: static constexpr bool value = sizeof(__test<_Tp>(0)) == 1; }; template struct __has_second_argument_type : integral_constant ::type> ::value> { }; template struct _Reference_wrapper_base : _Reference_wrapper_base_impl< __has_argument_type<_Tp>::value, __has_first_argument_type<_Tp>::value && __has_second_argument_type<_Tp>::value, _Tp> { }; template struct _Reference_wrapper_base<_Res(_T1)> : unary_function<_T1, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1) const> : unary_function<_T1, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1) volatile> : unary_function<_T1, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1) const volatile> : unary_function<_T1, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1, _T2)> : binary_function<_T1, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1, _T2) const> : binary_function<_T1, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> : binary_function<_T1, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> : binary_function<_T1, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res(*)(_T1)> : unary_function<_T1, _Res> { }; template struct _Reference_wrapper_base<_Res(*)(_T1, _T2)> : binary_function<_T1, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res (_T1::*)()> : unary_function<_T1*, _Res> { }; template struct _Reference_wrapper_base<_Res (_T1::*)(_T2)> : binary_function<_T1*, _T2, _Res> { }; template struct _Reference_wrapper_base<_Res (_T1::*)() const> : unary_function { }; template struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const> : binary_function { }; template struct _Reference_wrapper_base<_Res (_T1::*)() volatile> : unary_function { }; template struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile> : binary_function { }; template struct _Reference_wrapper_base<_Res (_T1::*)() const volatile> : unary_function { }; template struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile> : binary_function { }; template class reference_wrapper : public _Reference_wrapper_base::type> { _Tp* _M_data; public: typedef _Tp type; reference_wrapper(_Tp& __indata) noexcept : _M_data(std::__addressof(__indata)) { } reference_wrapper(_Tp&&) = delete; reference_wrapper(const reference_wrapper<_Tp>& __inref) noexcept : _M_data(__inref._M_data) { } reference_wrapper& operator=(const reference_wrapper<_Tp>& __inref) noexcept { _M_data = __inref._M_data; return *this; } operator _Tp&() const noexcept { return this->get(); } _Tp& get() const noexcept { return *_M_data; } template typename result_of<_Tp&(_Args&&...)>::type operator()(_Args&&... __args) const { return __invoke(get(), std::forward<_Args>(__args)...); } }; template inline reference_wrapper<_Tp> ref(_Tp& __t) noexcept { return reference_wrapper<_Tp>(__t); } template inline reference_wrapper cref(const _Tp& __t) noexcept { return reference_wrapper(__t); } template void ref(const _Tp&&) = delete; template void cref(const _Tp&&) = delete; template inline reference_wrapper<_Tp> ref(reference_wrapper<_Tp> __t) noexcept { return ref(__t.get()); } template inline reference_wrapper cref(reference_wrapper<_Tp> __t) noexcept { return cref(__t.get()); } template struct _Pack : integral_constant { }; template struct _AllConvertible : false_type { }; template struct _AllConvertible<_Pack<_From...>, _Pack<_To...>, true> : __and_...> { }; template using _NotSame = __not_::type, typename std::decay<_Tp2>::type>>; template struct _Maybe_unary_or_binary_function { }; template struct _Maybe_unary_or_binary_function<_Res, _T1> : std::unary_function<_T1, _Res> { }; template struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> : std::binary_function<_T1, _T2, _Res> { }; template class _Mem_fn<_Res (_Class::*)(_ArgTypes...)> : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...> { typedef _Res (_Class::*_Functor)(_ArgTypes...); template _Res _M_call(_Tp&& __object, const volatile _Class *, _Args&&... __args) const { return (std::forward<_Tp>(__object).*__pmf) (std::forward<_Args>(__args)...); } template _Res _M_call(_Tp&& __ptr, const volatile void *, _Args&&... __args) const { return ((*__ptr).*__pmf)(std::forward<_Args>(__args)...); } template using _RequireValidArgs = _Require<_AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs2 = _Require<_NotSame<_Class, _Tp>, _NotSame<_Class*, _Tp>, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs3 = _Require, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; public: typedef _Res result_type; explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } template> _Res operator()(_Class& __object, _Args&&... __args) const { return (__object.*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Class&& __object, _Args&&... __args) const { return (std::move(__object).*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Class* __object, _Args&&... __args) const { return (__object->*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Tp&& __object, _Args&&... __args) const { return _M_call(std::forward<_Tp>(__object), &__object, std::forward<_Args>(__args)...); } template> _Res operator()(reference_wrapper<_Tp> __ref, _Args&&... __args) const { return operator()(__ref.get(), std::forward<_Args>(__args)...); } private: _Functor __pmf; }; template class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const> : public _Maybe_unary_or_binary_function<_Res, const _Class*, _ArgTypes...> { typedef _Res (_Class::*_Functor)(_ArgTypes...) const; template _Res _M_call(_Tp&& __object, const volatile _Class *, _Args&&... __args) const { return (std::forward<_Tp>(__object).*__pmf) (std::forward<_Args>(__args)...); } template _Res _M_call(_Tp&& __ptr, const volatile void *, _Args&&... __args) const { return ((*__ptr).*__pmf)(std::forward<_Args>(__args)...); } template using _RequireValidArgs = _Require<_AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs2 = _Require<_NotSame<_Class, _Tp>, _NotSame, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs3 = _Require, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; public: typedef _Res result_type; explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } template> _Res operator()(const _Class& __object, _Args&&... __args) const { return (__object.*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(const _Class&& __object, _Args&&... __args) const { return (std::move(__object).*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(const _Class* __object, _Args&&... __args) const { return (__object->*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Tp&& __object, _Args&&... __args) const { return _M_call(std::forward<_Tp>(__object), &__object, std::forward<_Args>(__args)...); } template> _Res operator()(reference_wrapper<_Tp> __ref, _Args&&... __args) const { return operator()(__ref.get(), std::forward<_Args>(__args)...); } private: _Functor __pmf; }; template class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile> : public _Maybe_unary_or_binary_function<_Res, volatile _Class*, _ArgTypes...> { typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile; template _Res _M_call(_Tp&& __object, const volatile _Class *, _Args&&... __args) const { return (std::forward<_Tp>(__object).*__pmf) (std::forward<_Args>(__args)...); } template _Res _M_call(_Tp&& __ptr, const volatile void *, _Args&&... __args) const { return ((*__ptr).*__pmf)(std::forward<_Args>(__args)...); } template using _RequireValidArgs = _Require<_AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs2 = _Require<_NotSame<_Class, _Tp>, _NotSame, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs3 = _Require, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; public: typedef _Res result_type; explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } template> _Res operator()(volatile _Class& __object, _Args&&... __args) const { return (__object.*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(volatile _Class&& __object, _Args&&... __args) const { return (std::move(__object).*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(volatile _Class* __object, _Args&&... __args) const { return (__object->*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Tp&& __object, _Args&&... __args) const { return _M_call(std::forward<_Tp>(__object), &__object, std::forward<_Args>(__args)...); } template> _Res operator()(reference_wrapper<_Tp> __ref, _Args&&... __args) const { return operator()(__ref.get(), std::forward<_Args>(__args)...); } private: _Functor __pmf; }; template class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile> : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*, _ArgTypes...> { typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile; template _Res _M_call(_Tp&& __object, const volatile _Class *, _Args&&... __args) const { return (std::forward<_Tp>(__object).*__pmf) (std::forward<_Args>(__args)...); } template _Res _M_call(_Tp&& __ptr, const volatile void *, _Args&&... __args) const { return ((*__ptr).*__pmf)(std::forward<_Args>(__args)...); } template using _RequireValidArgs = _Require<_AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs2 = _Require<_NotSame<_Class, _Tp>, _NotSame, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; template using _RequireValidArgs3 = _Require, _AllConvertible<_Pack<_Args...>, _Pack<_ArgTypes...>>>; public: typedef _Res result_type; explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } template> _Res operator()(const volatile _Class& __object, _Args&&... __args) const { return (__object.*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(const volatile _Class&& __object, _Args&&... __args) const { return (std::move(__object).*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(const volatile _Class* __object, _Args&&... __args) const { return (__object->*__pmf)(std::forward<_Args>(__args)...); } template> _Res operator()(_Tp&& __object, _Args&&... __args) const { return _M_call(std::forward<_Tp>(__object), &__object, std::forward<_Args>(__args)...); } template> _Res operator()(reference_wrapper<_Tp> __ref, _Args&&... __args) const { return operator()(__ref.get(), std::forward<_Args>(__args)...); } private: _Functor __pmf; }; template struct _Mem_fn_const_or_non { typedef const _Tp& type; }; template struct _Mem_fn_const_or_non<_Tp, false> { typedef _Tp& type; }; template class _Mem_fn<_Res _Class::*> { using __pm_type = _Res _Class::*; template auto _M_call(_Tp&& __object, const _Class *) const noexcept -> decltype(std::forward<_Tp>(__object).*std::declval<__pm_type&>()) { return std::forward<_Tp>(__object).*__pm; } template auto _M_call(_Tp&& __object, _Up * const *) const noexcept -> decltype((*std::forward<_Tp>(__object)).*std::declval<__pm_type&>()) { return (*std::forward<_Tp>(__object)).*__pm; } template auto _M_call(_Tp&& __ptr, const volatile void*) const noexcept(noexcept((*__ptr).*std::declval<__pm_type&>())) -> decltype((*__ptr).*std::declval<__pm_type&>()) { return (*__ptr).*__pm; } public: explicit _Mem_fn(_Res _Class::*__pm) noexcept : __pm(__pm) { } _Res& operator()(_Class& __object) const noexcept { return __object.*__pm; } const _Res& operator()(const _Class& __object) const noexcept { return __object.*__pm; } _Res&& operator()(_Class&& __object) const noexcept { return std::forward<_Class>(__object).*__pm; } const _Res&& operator()(const _Class&& __object) const noexcept { return std::forward(__object).*__pm; } _Res& operator()(_Class* __object) const noexcept { return __object->*__pm; } const _Res& operator()(const _Class* __object) const noexcept { return __object->*__pm; } template>> auto operator()(_Tp&& __unknown) const noexcept(noexcept(std::declval<_Mem_fn*>()->_M_call (std::forward<_Tp>(__unknown), &__unknown))) -> decltype(this->_M_call(std::forward<_Tp>(__unknown), &__unknown)) { return _M_call(std::forward<_Tp>(__unknown), &__unknown); } template>> auto operator()(reference_wrapper<_Tp> __ref) const noexcept(noexcept(std::declval<_Mem_fn&>()(__ref.get()))) -> decltype((*this)(__ref.get())) { return (*this)(__ref.get()); } private: _Res _Class::*__pm; }; template inline _Mem_fn<_Tp _Class::*> mem_fn(_Tp _Class::* __pm) noexcept { return _Mem_fn<_Tp _Class::*>(__pm); } template struct is_bind_expression : public false_type { }; template struct is_placeholder : public integral_constant { }; template struct _Placeholder { }; namespace placeholders { extern const _Placeholder<1> _1; extern const _Placeholder<2> _2; extern const _Placeholder<3> _3; extern const _Placeholder<4> _4; extern const _Placeholder<5> _5; extern const _Placeholder<6> _6; extern const _Placeholder<7> _7; extern const _Placeholder<8> _8; extern const _Placeholder<9> _9; extern const _Placeholder<10> _10; extern const _Placeholder<11> _11; extern const _Placeholder<12> _12; extern const _Placeholder<13> _13; extern const _Placeholder<14> _14; extern const _Placeholder<15> _15; extern const _Placeholder<16> _16; extern const _Placeholder<17> _17; extern const _Placeholder<18> _18; extern const _Placeholder<19> _19; extern const _Placeholder<20> _20; extern const _Placeholder<21> _21; extern const _Placeholder<22> _22; extern const _Placeholder<23> _23; extern const _Placeholder<24> _24; extern const _Placeholder<25> _25; extern const _Placeholder<26> _26; extern const _Placeholder<27> _27; extern const _Placeholder<28> _28; extern const _Placeholder<29> _29; } template struct is_placeholder<_Placeholder<_Num> > : public integral_constant { }; template struct is_placeholder > : public integral_constant { }; struct _No_tuple_element; template struct _Safe_tuple_element_impl : tuple_element<__i, _Tuple> { }; template struct _Safe_tuple_element_impl<__i, _Tuple, false> { typedef _No_tuple_element type; }; template struct _Safe_tuple_element : _Safe_tuple_element_impl<__i, _Tuple, (__i < tuple_size<_Tuple>::value)> { }; template::value, bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> class _Mu; template class _Mu, false, false> { public: typedef _Tp& result_type; template result_type operator()(_CVRef& __arg, _Tuple&) const volatile { return __arg.get(); } }; template class _Mu<_Arg, true, false> { public: template auto operator()(_CVArg& __arg, tuple<_Args...>& __tuple) const volatile -> decltype(__arg(declval<_Args>()...)) { typedef typename _Build_index_tuple::__type _Indexes; return this->__call(__arg, __tuple, _Indexes()); } private: template auto __call(_CVArg& __arg, tuple<_Args...>& __tuple, const _Index_tuple<_Indexes...>&) const volatile -> decltype(__arg(declval<_Args>()...)) { return __arg(std::forward<_Args>(get<_Indexes>(__tuple))...); } }; template class _Mu<_Arg, false, true> { public: template class result; template class result<_CVMu(_CVArg, _Tuple)> { typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value - 1), _Tuple>::type __base_type; public: typedef typename add_rvalue_reference<__base_type>::type type; }; template typename result<_Mu(_Arg, _Tuple)>::type operator()(const volatile _Arg&, _Tuple& __tuple) const volatile { return std::forward::type>( ::std::get<(is_placeholder<_Arg>::value - 1)>(__tuple)); } }; template class _Mu<_Arg, false, false> { public: template struct result; template struct result<_CVMu(_CVArg, _Tuple)> { typedef typename add_lvalue_reference<_CVArg>::type type; }; template _CVArg&& operator()(_CVArg&& __arg, _Tuple&) const volatile { return std::forward<_CVArg>(__arg); } }; template struct _Maybe_wrap_member_pointer { typedef _Tp type; static const _Tp& __do_wrap(const _Tp& __x) { return __x; } static _Tp&& __do_wrap(_Tp&& __x) { return static_cast<_Tp&&>(__x); } }; template struct _Maybe_wrap_member_pointer<_Tp _Class::*> { typedef _Mem_fn<_Tp _Class::*> type; static type __do_wrap(_Tp _Class::* __pm) { return type(__pm); } }; template<> struct _Maybe_wrap_member_pointer { typedef void type; }; template inline auto __volget(volatile tuple<_Tp...>& __tuple) -> typename tuple_element<_Ind, tuple<_Tp...>>::type volatile& { return std::get<_Ind>(const_cast&>(__tuple)); } template inline auto __volget(const volatile tuple<_Tp...>& __tuple) -> typename tuple_element<_Ind, tuple<_Tp...>>::type const volatile& { return std::get<_Ind>(const_cast&>(__tuple)); } template struct _Bind; template class _Bind<_Functor(_Bound_args...)> : public _Weak_result_type<_Functor> { typedef _Bind __self_type; typedef typename _Build_index_tuple::__type _Bound_indexes; _Functor _M_f; tuple<_Bound_args...> _M_bound_args; template _Result __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) { return _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template _Result __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const { return _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template _Result __call_v(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile { return _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } template _Result __call_c_v(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const volatile { return _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } public: template explicit _Bind(const _Functor& __f, _Args&&... __args) : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) { } template explicit _Bind(_Functor&& __f, _Args&&... __args) : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) { } _Bind(const _Bind&) = default; _Bind(_Bind&& __b) : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) { } template()( _Mu<_Bound_args>()( std::declval<_Bound_args&>(), std::declval&>() )... ) )> _Result operator()(_Args&&... __args) { return this->__call<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template= 0), typename add_const<_Functor>::type>::type>()( _Mu<_Bound_args>()( std::declval(), std::declval&>() )... ) )> _Result operator()(_Args&&... __args) const { return this->__call_c<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template= 0), typename add_volatile<_Functor>::type>::type>()( _Mu<_Bound_args>()( std::declval(), std::declval&>() )... ) )> _Result operator()(_Args&&... __args) volatile { return this->__call_v<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template= 0), typename add_cv<_Functor>::type>::type>()( _Mu<_Bound_args>()( std::declval(), std::declval&>() )... ) )> _Result operator()(_Args&&... __args) const volatile { return this->__call_c_v<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } }; template struct _Bind_result; template class _Bind_result<_Result, _Functor(_Bound_args...)> { typedef _Bind_result __self_type; typedef typename _Build_index_tuple::__type _Bound_indexes; _Functor _M_f; tuple<_Bound_args...> _M_bound_args; template struct __enable_if_void : enable_if::value, int> { }; template struct __disable_if_void : enable_if::value, int> { }; template _Result __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __disable_if_void<_Res>::type = 0) { return _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template void __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __enable_if_void<_Res>::type = 0) { _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template _Result __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __disable_if_void<_Res>::type = 0) const { return _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template void __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __enable_if_void<_Res>::type = 0) const { _M_f(_Mu<_Bound_args>() (get<_Indexes>(_M_bound_args), __args)...); } template _Result __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __disable_if_void<_Res>::type = 0) volatile { return _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } template void __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __enable_if_void<_Res>::type = 0) volatile { _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } template _Result __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __disable_if_void<_Res>::type = 0) const volatile { return _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } template void __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>, typename __enable_if_void<_Res>::type = 0) const volatile { _M_f(_Mu<_Bound_args>() (__volget<_Indexes>(_M_bound_args), __args)...); } public: typedef _Result result_type; template explicit _Bind_result(const _Functor& __f, _Args&&... __args) : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) { } template explicit _Bind_result(_Functor&& __f, _Args&&... __args) : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) { } _Bind_result(const _Bind_result&) = default; _Bind_result(_Bind_result&& __b) : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) { } template result_type operator()(_Args&&... __args) { return this->__call<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template result_type operator()(_Args&&... __args) const { return this->__call<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template result_type operator()(_Args&&... __args) volatile { return this->__call<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } template result_type operator()(_Args&&... __args) const volatile { return this->__call<_Result>( std::forward_as_tuple(std::forward<_Args>(__args)...), _Bound_indexes()); } }; template struct is_bind_expression<_Bind<_Signature> > : public true_type { }; template struct is_bind_expression > : public true_type { }; template struct is_bind_expression > : public true_type { }; template struct is_bind_expression> : public true_type { }; template struct is_bind_expression<_Bind_result<_Result, _Signature>> : public true_type { }; template struct is_bind_expression> : public true_type { }; template struct is_bind_expression> : public true_type { }; template struct is_bind_expression> : public true_type { }; template::type> using __is_socketlike = __or_, is_enum<_Tp2>>; template struct _Bind_helper { typedef _Maybe_wrap_member_pointer::type> __maybe_type; typedef typename __maybe_type::type __func_type; typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; }; template struct _Bind_helper { }; template inline typename _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type bind(_Func&& __f, _BoundArgs&&... __args) { typedef _Bind_helper __helper_type; typedef typename __helper_type::__maybe_type __maybe_type; typedef typename __helper_type::type __result_type; return __result_type(__maybe_type::__do_wrap(std::forward<_Func>(__f)), std::forward<_BoundArgs>(__args)...); } template struct _Bindres_helper { typedef _Maybe_wrap_member_pointer::type> __maybe_type; typedef typename __maybe_type::type __functor_type; typedef _Bind_result<_Result, __functor_type(typename decay<_BoundArgs>::type...)> type; }; template inline typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type bind(_Func&& __f, _BoundArgs&&... __args) { typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; typedef typename __helper_type::__maybe_type __maybe_type; typedef typename __helper_type::type __result_type; return __result_type(__maybe_type::__do_wrap(std::forward<_Func>(__f)), std::forward<_BoundArgs>(__args)...); } template struct _Bind_simple; template struct _Bind_simple<_Callable(_Args...)> { typedef typename result_of<_Callable(_Args...)>::type result_type; template::type> explicit _Bind_simple(const _Callable& __callable, _Args2&&... __args) : _M_bound(__callable, std::forward<_Args2>(__args)...) { } template::type> explicit _Bind_simple(_Callable&& __callable, _Args2&&... __args) : _M_bound(std::move(__callable), std::forward<_Args2>(__args)...) { } _Bind_simple(const _Bind_simple&) = default; _Bind_simple(_Bind_simple&&) = default; result_type operator()() { typedef typename _Build_index_tuple::__type _Indices; return _M_invoke(_Indices()); } private: template typename result_of<_Callable(_Args...)>::type _M_invoke(_Index_tuple<_Indices...>) { return std::forward<_Callable>(std::get<0>(_M_bound))( std::forward<_Args>(std::get<_Indices+1>(_M_bound))...); } std::tuple<_Callable, _Args...> _M_bound; }; template struct _Bind_simple_helper { typedef _Maybe_wrap_member_pointer::type> __maybe_type; typedef typename __maybe_type::type __func_type; typedef _Bind_simple<__func_type(typename decay<_BoundArgs>::type...)> __type; }; template typename _Bind_simple_helper<_Callable, _Args...>::__type __bind_simple(_Callable&& __callable, _Args&&... __args) { typedef _Bind_simple_helper<_Callable, _Args...> __helper_type; typedef typename __helper_type::__maybe_type __maybe_type; typedef typename __helper_type::__type __result_type; return __result_type( __maybe_type::__do_wrap( std::forward<_Callable>(__callable)), std::forward<_Args>(__args)...); } class bad_function_call : public std::exception { public: virtual ~bad_function_call() noexcept; const char* what() const noexcept; }; template struct __is_location_invariant : integral_constant::value || is_member_pointer<_Tp>::value)> { }; class _Undefined_class; union _Nocopy_types { void* _M_object; const void* _M_const_object; void (*_M_function_pointer)(); void (_Undefined_class::*_M_member_pointer)(); }; union _Any_data { void* _M_access() { return &_M_pod_data[0]; } const void* _M_access() const { return &_M_pod_data[0]; } template _Tp& _M_access() { return *static_cast<_Tp*>(_M_access()); } template const _Tp& _M_access() const { return *static_cast(_M_access()); } _Nocopy_types _M_unused; char _M_pod_data[sizeof(_Nocopy_types)]; }; enum _Manager_operation { __get_type_info, __get_functor_ptr, __clone_functor, __destroy_functor }; template struct _Simple_type_wrapper { _Simple_type_wrapper(_Tp __value) : __value(__value) { } _Tp __value; }; template struct __is_location_invariant<_Simple_type_wrapper<_Tp> > : __is_location_invariant<_Tp> { }; template inline _Functor& __callable_functor(_Functor& __f) { return __f; } template inline _Mem_fn<_Member _Class::*> __callable_functor(_Member _Class::* &__p) { return std::mem_fn(__p); } template inline _Mem_fn<_Member _Class::*> __callable_functor(_Member _Class::* const &__p) { return std::mem_fn(__p); } template inline _Mem_fn<_Member _Class::*> __callable_functor(_Member _Class::* volatile &__p) { return std::mem_fn(__p); } template inline _Mem_fn<_Member _Class::*> __callable_functor(_Member _Class::* const volatile &__p) { return std::mem_fn(__p); } template class function; class _Function_base { public: static const std::size_t _M_max_size = sizeof(_Nocopy_types); static const std::size_t _M_max_align = __alignof__(_Nocopy_types); template class _Base_manager { protected: static const bool __stored_locally = (__is_location_invariant<_Functor>::value && sizeof(_Functor) <= _M_max_size && __alignof__(_Functor) <= _M_max_align && (_M_max_align % __alignof__(_Functor) == 0)); typedef integral_constant _Local_storage; static _Functor* _M_get_pointer(const _Any_data& __source) { const _Functor* __ptr = __stored_locally? std::__addressof(__source._M_access<_Functor>()) : __source._M_access<_Functor*>(); return const_cast<_Functor*>(__ptr); } static void _M_clone(_Any_data& __dest, const _Any_data& __source, true_type) { new (__dest._M_access()) _Functor(__source._M_access<_Functor>()); } static void _M_clone(_Any_data& __dest, const _Any_data& __source, false_type) { __dest._M_access<_Functor*>() = new _Functor(*__source._M_access<_Functor*>()); } static void _M_destroy(_Any_data& __victim, true_type) { __victim._M_access<_Functor>().~_Functor(); } static void _M_destroy(_Any_data& __victim, false_type) { delete __victim._M_access<_Functor*>(); } public: static bool _M_manager(_Any_data& __dest, const _Any_data& __source, _Manager_operation __op) { switch (__op) { case __get_type_info: __dest._M_access() = &typeid(_Functor); break; case __get_functor_ptr: __dest._M_access<_Functor*>() = _M_get_pointer(__source); break; case __clone_functor: _M_clone(__dest, __source, _Local_storage()); break; case __destroy_functor: _M_destroy(__dest, _Local_storage()); break; } return false; } static void _M_init_functor(_Any_data& __functor, _Functor&& __f) { _M_init_functor(__functor, std::move(__f), _Local_storage()); } template static bool _M_not_empty_function(const function<_Signature>& __f) { return static_cast(__f); } template static bool _M_not_empty_function(const _Tp*& __fp) { return __fp; } template static bool _M_not_empty_function(_Tp _Class::* const& __mp) { return __mp; } template static bool _M_not_empty_function(const _Tp&) { return true; } private: static void _M_init_functor(_Any_data& __functor, _Functor&& __f, true_type) { new (__functor._M_access()) _Functor(std::move(__f)); } static void _M_init_functor(_Any_data& __functor, _Functor&& __f, false_type) { __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); } }; template class _Ref_manager : public _Base_manager<_Functor*> { typedef _Function_base::_Base_manager<_Functor*> _Base; public: static bool _M_manager(_Any_data& __dest, const _Any_data& __source, _Manager_operation __op) { switch (__op) { case __get_type_info: __dest._M_access() = &typeid(_Functor); break; case __get_functor_ptr: __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source); return is_const<_Functor>::value; break; default: _Base::_M_manager(__dest, __source, __op); } return false; } static void _M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f) { _Base::_M_init_functor(__functor, std::__addressof(__f.get())); } }; _Function_base() : _M_manager(0) { } ~_Function_base() { if (_M_manager) _M_manager(_M_functor, _M_functor, __destroy_functor); } bool _M_empty() const { return !_M_manager; } typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, _Manager_operation); _Any_data _M_functor; _Manager_type _M_manager; }; template class _Function_handler; template class _Function_handler<_Res(_ArgTypes...), _Functor> : public _Function_base::_Base_manager<_Functor> { typedef _Function_base::_Base_manager<_Functor> _Base; public: static _Res _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { return (*_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; template class _Function_handler : public _Function_base::_Base_manager<_Functor> { typedef _Function_base::_Base_manager<_Functor> _Base; public: static void _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { (*_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; template class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> > : public _Function_base::_Ref_manager<_Functor> { typedef _Function_base::_Ref_manager<_Functor> _Base; public: static _Res _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { return __callable_functor(**_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; template class _Function_handler > : public _Function_base::_Ref_manager<_Functor> { typedef _Function_base::_Ref_manager<_Functor> _Base; public: static void _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { __callable_functor(**_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; template class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> : public _Function_handler { typedef _Function_handler _Base; public: static _Res _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { return std::mem_fn(_Base::_M_get_pointer(__functor)->__value)( std::forward<_ArgTypes>(__args)...); } }; template class _Function_handler : public _Function_base::_Base_manager< _Simple_type_wrapper< _Member _Class::* > > { typedef _Member _Class::* _Functor; typedef _Simple_type_wrapper<_Functor> _Wrapper; typedef _Function_base::_Base_manager<_Wrapper> _Base; public: static bool _M_manager(_Any_data& __dest, const _Any_data& __source, _Manager_operation __op) { switch (__op) { case __get_type_info: __dest._M_access() = &typeid(_Functor); break; case __get_functor_ptr: __dest._M_access<_Functor*>() = &_Base::_M_get_pointer(__source)->__value; break; default: _Base::_M_manager(__dest, __source, __op); } return false; } static void _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { std::mem_fn(_Base::_M_get_pointer(__functor)->__value)( std::forward<_ArgTypes>(__args)...); } }; template class function<_Res(_ArgTypes...)> : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, private _Function_base { typedef _Res _Signature_type(_ArgTypes...); template using _Invoke = decltype(__callable_functor(std::declval<_Functor&>()) (std::declval<_ArgTypes>()...) ); template struct _CheckResult : is_convertible<_CallRes, _Res1> { }; template struct _CheckResult<_CallRes, void> : true_type { }; template using _Callable = _CheckResult<_Invoke<_Functor>, _Res>; template using _Requires = typename enable_if<_Cond::value, _Tp>::type; public: typedef _Res result_type; function() noexcept : _Function_base() { } function(nullptr_t) noexcept : _Function_base() { } function(const function& __x); function(function&& __x) : _Function_base() { __x.swap(*this); } template, void>> function(_Functor); function& operator=(const function& __x) { function(__x).swap(*this); return *this; } function& operator=(function&& __x) { function(std::move(__x)).swap(*this); return *this; } function& operator=(nullptr_t) { if (_M_manager) { _M_manager(_M_functor, _M_functor, __destroy_functor); _M_manager = 0; _M_invoker = 0; } return *this; } template _Requires<_Callable<_Functor>, function&> operator=(_Functor&& __f) { function(std::forward<_Functor>(__f)).swap(*this); return *this; } template function& operator=(reference_wrapper<_Functor> __f) noexcept { function(__f).swap(*this); return *this; } void swap(function& __x) { std::swap(_M_functor, __x._M_functor); std::swap(_M_manager, __x._M_manager); std::swap(_M_invoker, __x._M_invoker); } explicit operator bool() const noexcept { return !_M_empty(); } _Res operator()(_ArgTypes... __args) const; const type_info& target_type() const noexcept; template _Functor* target() noexcept; template const _Functor* target() const noexcept; private: typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...); _Invoker_type _M_invoker; }; template function<_Res(_ArgTypes...)>:: function(const function& __x) : _Function_base() { if (static_cast(__x)) { _M_invoker = __x._M_invoker; _M_manager = __x._M_manager; __x._M_manager(_M_functor, __x._M_functor, __clone_functor); } } template template function<_Res(_ArgTypes...)>:: function(_Functor __f) : _Function_base() { typedef _Function_handler<_Signature_type, _Functor> _My_handler; if (_My_handler::_M_not_empty_function(__f)) { _My_handler::_M_init_functor(_M_functor, std::move(__f)); _M_invoker = &_My_handler::_M_invoke; _M_manager = &_My_handler::_M_manager; } } template _Res function<_Res(_ArgTypes...)>:: operator()(_ArgTypes... __args) const { if (_M_empty()) __throw_bad_function_call(); return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); } template const type_info& function<_Res(_ArgTypes...)>:: target_type() const noexcept { if (_M_manager) { _Any_data __typeinfo_result; _M_manager(__typeinfo_result, _M_functor, __get_type_info); return *__typeinfo_result._M_access(); } else return typeid(void); } template template _Functor* function<_Res(_ArgTypes...)>:: target() noexcept { if (typeid(_Functor) == target_type() && _M_manager) { _Any_data __ptr; if (_M_manager(__ptr, _M_functor, __get_functor_ptr) && !is_const<_Functor>::value) return 0; else return __ptr._M_access<_Functor*>(); } else return 0; } template template const _Functor* function<_Res(_ArgTypes...)>:: target() const noexcept { if (typeid(_Functor) == target_type() && _M_manager) { _Any_data __ptr; _M_manager(__ptr, _M_functor, __get_functor_ptr); return __ptr._M_access(); } else return 0; } template inline bool operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept { return !static_cast(__f); } template inline bool operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept { return !static_cast(__f); } template inline bool operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept { return static_cast(__f); } template inline bool operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept { return static_cast(__f); } template inline void swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) { __x.swap(__y); } } # 67 "/usr/include/c++/4.8/bits/stl_algo.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template void __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c) { if (*__a < *__b) { if (*__b < *__c) std::iter_swap(__a, __b); else if (*__a < *__c) std::iter_swap(__a, __c); } else if (*__a < *__c) return; else if (*__b < *__c) std::iter_swap(__a, __c); else std::iter_swap(__a, __b); } template void __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c, _Compare __comp) { if (__comp(*__a, *__b)) { if (__comp(*__b, *__c)) std::iter_swap(__a, __b); else if (__comp(*__a, *__c)) std::iter_swap(__a, __c); } else if (__comp(*__a, *__c)) return; else if (__comp(*__b, *__c)) std::iter_swap(__a, __c); else std::iter_swap(__a, __b); } template inline _InputIterator __find(_InputIterator __first, _InputIterator __last, const _Tp& __val, input_iterator_tag) { while (__first != __last && !(*__first == __val)) ++__first; return __first; } template inline _InputIterator __find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred, input_iterator_tag) { while (__first != __last && !bool(__pred(*__first))) ++__first; return __first; } template _RandomAccessIterator __find(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __val, random_access_iterator_tag) { typename iterator_traits<_RandomAccessIterator>::difference_type __trip_count = (__last - __first) >> 2; for (; __trip_count > 0; --__trip_count) { if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; } switch (__last - __first) { case 3: if (*__first == __val) return __first; ++__first; case 2: if (*__first == __val) return __first; ++__first; case 1: if (*__first == __val) return __first; ++__first; case 0: default: return __last; } } template _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 inline _InputIterator __find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred, input_iterator_tag) { while (__first != __last && bool(__pred(*__first))) ++__first; return __first; } template _RandomAccessIterator __find_if_not(_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 (!bool(__pred(*__first))) return __first; ++__first; if (!bool(__pred(*__first))) return __first; ++__first; if (!bool(__pred(*__first))) return __first; ++__first; if (!bool(__pred(*__first))) return __first; ++__first; } switch (__last - __first) { case 3: if (!bool(__pred(*__first))) return __first; ++__first; case 2: if (!bool(__pred(*__first))) return __first; ++__first; case 1: if (!bool(__pred(*__first))) return __first; ++__first; case 0: default: return __last; } } template inline _InputIterator __find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) { return std::__find_if_not(__first, __last, __pred, std::__iterator_category(__first)); } template _InputIterator __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) { for (; __len; --__len, ++__first) if (!bool(__pred(*__first))) break; return __first; } template _ForwardIterator __search_n(_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp& __val, std::forward_iterator_tag) { __first = std::find(__first, __last, __val); while (__first != __last) { typename iterator_traits<_ForwardIterator>::difference_type __n = __count; _ForwardIterator __i = __first; ++__i; while (__i != __last && __n != 1 && *__i == __val) { ++__i; --__n; } if (__n == 1) return __first; if (__i == __last) return __last; __first = std::find(++__i, __last, __val); } return __last; } template _RandomAccessIter __search_n(_RandomAccessIter __first, _RandomAccessIter __last, _Integer __count, const _Tp& __val, std::random_access_iterator_tag) { typedef typename std::iterator_traits<_RandomAccessIter>::difference_type _DistanceType; _DistanceType __tailSize = __last - __first; const _DistanceType __pattSize = __count; if (__tailSize < __pattSize) return __last; const _DistanceType __skipOffset = __pattSize - 1; _RandomAccessIter __lookAhead = __first + __skipOffset; __tailSize -= __pattSize; while (1) { while (!(*__lookAhead == __val)) { if (__tailSize < __pattSize) return __last; __lookAhead += __pattSize; __tailSize -= __pattSize; } _DistanceType __remainder = __skipOffset; for (_RandomAccessIter __backTrack = __lookAhead - 1; *__backTrack == __val; --__backTrack) { if (--__remainder == 0) return (__lookAhead - __skipOffset); } if (__remainder > __tailSize) return __last; __lookAhead += __remainder; __tailSize -= __remainder; } } template _ForwardIterator __search_n(_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp& __val, _BinaryPredicate __binary_pred, std::forward_iterator_tag) { while (__first != __last && !bool(__binary_pred(*__first, __val))) ++__first; while (__first != __last) { typename iterator_traits<_ForwardIterator>::difference_type __n = __count; _ForwardIterator __i = __first; ++__i; while (__i != __last && __n != 1 && bool(__binary_pred(*__i, __val))) { ++__i; --__n; } if (__n == 1) return __first; if (__i == __last) return __last; __first = ++__i; while (__first != __last && !bool(__binary_pred(*__first, __val))) ++__first; } return __last; } template _RandomAccessIter __search_n(_RandomAccessIter __first, _RandomAccessIter __last, _Integer __count, const _Tp& __val, _BinaryPredicate __binary_pred, std::random_access_iterator_tag) { typedef typename std::iterator_traits<_RandomAccessIter>::difference_type _DistanceType; _DistanceType __tailSize = __last - __first; const _DistanceType __pattSize = __count; if (__tailSize < __pattSize) return __last; const _DistanceType __skipOffset = __pattSize - 1; _RandomAccessIter __lookAhead = __first + __skipOffset; __tailSize -= __pattSize; while (1) { while (!bool(__binary_pred(*__lookAhead, __val))) { if (__tailSize < __pattSize) return __last; __lookAhead += __pattSize; __tailSize -= __pattSize; } _DistanceType __remainder = __skipOffset; for (_RandomAccessIter __backTrack = __lookAhead - 1; __binary_pred(*__backTrack, __val); --__backTrack) { if (--__remainder == 0) return (__lookAhead - __skipOffset); } if (__remainder > __tailSize) return __last; __lookAhead += __remainder; __tailSize -= __remainder; } } template _ForwardIterator1 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2, forward_iterator_tag, forward_iterator_tag) { if (__first2 == __last2) return __last1; else { _ForwardIterator1 __result = __last1; while (1) { _ForwardIterator1 __new_result = std::search(__first1, __last1, __first2, __last2); if (__new_result == __last1) return __result; else { __result = __new_result; __first1 = __new_result; ++__first1; } } } } template _ForwardIterator1 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2, forward_iterator_tag, forward_iterator_tag, _BinaryPredicate __comp) { if (__first2 == __last2) return __last1; else { _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 _BidirectionalIterator1 __find_end(_BidirectionalIterator1 __first1, _BidirectionalIterator1 __last1, _BidirectionalIterator2 __first2, _BidirectionalIterator2 __last2, bidirectional_iterator_tag, bidirectional_iterator_tag) { 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); if (__rresult == __rlast1) return __last1; else { _BidirectionalIterator1 __result = __rresult.base(); std::advance(__result, -std::distance(__first2, __last2)); return __result; } } template _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; } } template 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)); } template 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), __comp); } template inline bool all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { return __last == std::find_if_not(__first, __last, __pred); } template inline bool none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { return __last == std::find_if(__first, __last, __pred); } template inline bool any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { return !std::none_of(__first, __last, __pred); } template inline _InputIterator find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) { ; return std::__find_if_not(__first, __last, __pred); } template 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); } template _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 _OutputIterator remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value) { ; for (; __first != __last; ++__first) if (!(*__first == __value)) { *__result = *__first; ++__result; } return __result; } template _OutputIterator remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) { ; for (; __first != __last; ++__first) if (!bool(__pred(*__first))) { *__result = *__first; ++__result; } return __result; } template _OutputIterator copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) { ; for (; __first != __last; ++__first) if (__pred(*__first)) { *__result = *__first; ++__result; } return __result; } template _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 inline _OutputIterator __copy_n(_RandomAccessIterator __first, _Size __n, _OutputIterator __result, random_access_iterator_tag) { return std::copy(__first, __first + __n, __result); } template inline _OutputIterator copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) { return std::__copy_n(__first, __n, __result, std::__iterator_category(__first)); } template 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 _ForwardIterator remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { ; __first = std::find(__first, __last, __value); if(__first == __last) return __first; _ForwardIterator __result = __first; ++__first; for(; __first != __last; ++__first) if(!(*__first == __value)) { *__result = std::move(*__first); ++__result; } return __result; } template _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(!bool(__pred(*__first))) { *__result = std::move(*__first); ++__result; } return __result; } template _ForwardIterator unique(_ForwardIterator __first, _ForwardIterator __last) { ; __first = std::adjacent_find(__first, __last); if (__first == __last) return __last; _ForwardIterator __dest = __first; ++__first; while (++__first != __last) if (!(*__dest == *__first)) *++__dest = std::move(*__first); return ++__dest; } template _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 (!bool(__binary_pred(*__dest, *__first))) *++__dest = std::move(*__first); return ++__dest; } template _OutputIterator __unique_copy(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, forward_iterator_tag, output_iterator_tag) { _ForwardIterator __next = __first; *__result = *__first; while (++__next != __last) if (!(*__first == *__next)) { __first = __next; *++__result = *__first; } return ++__result; } template _OutputIterator __unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, input_iterator_tag, output_iterator_tag) { typename iterator_traits<_InputIterator>::value_type __value = *__first; *__result = __value; while (++__first != __last) if (!(__value == *__first)) { __value = *__first; *++__result = __value; } return ++__result; } template _ForwardIterator __unique_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, input_iterator_tag, forward_iterator_tag) { *__result = *__first; while (++__first != __last) if (!(*__result == *__first)) *++__result = *__first; return ++__result; } template _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 (!bool(__binary_pred(*__first, *__next))) { __first = __next; *++__result = *__first; } return ++__result; } template _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; *__result = __value; while (++__first != __last) if (!bool(__binary_pred(__value, *__first))) { __value = *__first; *++__result = __value; } return ++__result; } template _ForwardIterator __unique_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _BinaryPredicate __binary_pred, input_iterator_tag, forward_iterator_tag) { *__result = *__first; while (++__first != __last) if (!bool(__binary_pred(*__result, *__first))) *++__result = *__first; return ++__result; } template 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 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; } } template inline void reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) { ; std::__reverse(__first, __last, std::__iterator_category(__first)); } template _OutputIterator reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) { ; while (__first != __last) { --__last; *__result = *__last; ++__result; } return __result; } template _EuclideanRingElement __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) { while (__n != 0) { _EuclideanRingElement __t = __m % __n; __m = __n; __n = __t; } return __m; } template void __rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, forward_iterator_tag) { if (__first == __middle || __last == __middle) return; _ForwardIterator __first2 = __middle; do { std::iter_swap(__first, __first2); ++__first; ++__first2; if (__first == __middle) __middle = __first2; } while (__first2 != __last); __first2 = __middle; while (__first2 != __last) { std::iter_swap(__first, __first2); ++__first; ++__first2; if (__first == __middle) __middle = __first2; else if (__first2 == __last) __first2 = __middle; } } template void __rotate(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, bidirectional_iterator_tag) { if (__first == __middle || __last == __middle) return; 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()); else std::__reverse(__first, __middle, bidirectional_iterator_tag()); } template void __rotate(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, random_access_iterator_tag) { if (__first == __middle || __last == __middle) return; 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; } _RandomAccessIterator __p = __first; 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; } _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; 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; } _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; std::swap(__n, __k); } } } template inline void rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) { ; ; typedef typename iterator_traits<_ForwardIterator>::iterator_category _IterType; std::__rotate(__first, __middle, __last, _IterType()); } template _OutputIterator rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) { ; ; return std::copy(__first, __middle, std::copy(__middle, __last, __result)); } template _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 _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; } } template _ForwardIterator __inplace_stable_partition(_ForwardIterator __first, _Predicate __pred, _Distance __len) { if (__len == 1) return __first; _ForwardIterator __middle = __first; std::advance(__middle, __len / 2); _ForwardIterator __left_split = std::__inplace_stable_partition(__first, __pred, __len / 2); _Distance __right_len = __len - __len / 2; _ForwardIterator __right_split = std::__find_if_not_n(__middle, __right_len, __pred); if (__right_len) __right_split = std::__inplace_stable_partition(__middle, __pred, __right_len); std::rotate(__left_split, __middle, __right_split); std::advance(__left_split, std::distance(__middle, __right_split)); return __left_split; } template _ForwardIterator __stable_partition_adaptive(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, _Distance __len, _Pointer __buffer, _Distance __buffer_size) { 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; } else { _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 _ForwardIterator stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { ; __first = std::__find_if_not(__first, __last, __pred); if (__first == __last) return __first; else { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; typedef typename iterator_traits<_ForwardIterator>::difference_type _DistanceType; _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, __last); if (__buf.size() > 0) return std::__stable_partition_adaptive(__first, __last, __pred, _DistanceType(__buf.requested_size()), __buf.begin(), _DistanceType(__buf.size())); else return std::__inplace_stable_partition(__first, __pred, _DistanceType(__buf.requested_size())); } } template void __heap_select(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) { std::make_heap(__first, __middle); for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) if (*__i < *__first) std::__pop_heap(__first, __middle, __i); } template 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 _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; ; ; 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); while (__first != __last) { if (*__first < *__result_first) std::__adjust_heap(__result_first, _DistanceType(0), _DistanceType(__result_real_last - __result_first), _InputValueType(*__first)); ++__first; } std::sort_heap(__result_first, __result_real_last); return __result_real_last; } template _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; ; ; 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; } template void __unguarded_linear_insert(_RandomAccessIterator __last) { typename iterator_traits<_RandomAccessIterator>::value_type __val = std::move(*__last); _RandomAccessIterator __next = __last; --__next; while (__val < *__next) { *__last = std::move(*__next); __last = __next; --__next; } *__last = std::move(__val); } template 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 void __insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { if (__first == __last) return; for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) { if (*__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); } } template 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, __comp); } } template inline void __unguarded_insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; for (_RandomAccessIterator __i = __first; __i != __last; ++__i) std::__unguarded_linear_insert(__i); } template inline void __unguarded_insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; for (_RandomAccessIterator __i = __first; __i != __last; ++__i) std::__unguarded_linear_insert(__i, __comp); } enum { _S_threshold = 16 }; template void __final_insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { if (__last - __first > int(_S_threshold)) { std::__insertion_sort(__first, __first + int(_S_threshold)); std::__unguarded_insertion_sort(__first + int(_S_threshold), __last); } else std::__insertion_sort(__first, __last); } template 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 _RandomAccessIterator __unguarded_partition(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __pivot) { while (true) { while (*__first < __pivot) ++__first; --__last; while (__pivot < *__last) --__last; if (!(__first < __last)) return __first; std::iter_swap(__first, __last); ++__first; } } template _RandomAccessIterator __unguarded_partition(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __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 inline _RandomAccessIterator __unguarded_partition_pivot(_RandomAccessIterator __first, _RandomAccessIterator __last) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; std::__move_median_first(__first, __mid, (__last - 1)); return std::__unguarded_partition(__first + 1, __last, *__first); } template inline _RandomAccessIterator __unguarded_partition_pivot(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; std::__move_median_first(__first, __mid, (__last - 1), __comp); return std::__unguarded_partition(__first + 1, __last, *__first, __comp); } template void __introsort_loop(_RandomAccessIterator __first, _RandomAccessIterator __last, _Size __depth_limit) { while (__last - __first > int(_S_threshold)) { if (__depth_limit == 0) { std::partial_sort(__first, __last, __last); return; } --__depth_limit; _RandomAccessIterator __cut = std::__unguarded_partition_pivot(__first, __last); std::__introsort_loop(__cut, __last, __depth_limit); __last = __cut; } } template 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 void __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Size __depth_limit) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; while (__last - __first > 3) { if (__depth_limit == 0) { std::__heap_select(__first, __nth + 1, __last); std::iter_swap(__first, __nth); return; } --__depth_limit; _RandomAccessIterator __cut = std::__unguarded_partition_pivot(__first, __last); if (__cut <= __nth) __first = __cut; else __last = __cut; } std::__insertion_sort(__first, __last); } template void __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Size __depth_limit, _Compare __comp) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; 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); } template _ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val, _Compare __comp) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 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; } template _ForwardIterator upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 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 (__val < *__middle) __len = __half; else { __first = __middle; ++__first; __len = __len - __half - 1; } } return __first; } template _ForwardIterator upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val, _Compare __comp) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 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; } template pair<_ForwardIterator, _ForwardIterator> equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 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 (*__middle < __val) { __first = __middle; ++__first; __len = __len - __half - 1; } else if (__val < *__middle) __len = __half; else { _ForwardIterator __left = std::lower_bound(__first, __middle, __val); std::advance(__first, __len); _ForwardIterator __right = std::upper_bound(++__middle, __first, __val); return pair<_ForwardIterator, _ForwardIterator>(__left, __right); } } return pair<_ForwardIterator, _ForwardIterator>(__first, __first); } template pair<_ForwardIterator, _ForwardIterator> equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val, _Compare __comp) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 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 if (__comp(__val, *__middle)) __len = __half; else { _ForwardIterator __left = std::lower_bound(__first, __middle, __val, __comp); std::advance(__first, __len); _ForwardIterator __right = std::upper_bound(++__middle, __first, __val, __comp); return pair<_ForwardIterator, _ForwardIterator>(__left, __right); } } return pair<_ForwardIterator, _ForwardIterator>(__first, __first); } template 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); return __i != __last && !(__val < *__i); } template 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, __comp); return __i != __last && !bool(__comp(__val, *__i)); } template void __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { while (__first1 != __last1 && __first2 != __last2) { if (*__first2 < *__first1) { *__result = std::move(*__first2); ++__first2; } else { *__result = std::move(*__first1); ++__first1; } ++__result; } if (__first1 != __last1) std::move(__first1, __last1, __result); } template 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 void __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, _BidirectionalIterator1 __last1, _BidirectionalIterator2 __first2, _BidirectionalIterator2 __last2, _BidirectionalIterator3 __result) { if (__first1 == __last1) { std::move_backward(__first2, __last2, __result); return; } else if (__first2 == __last2) return; --__last1; --__last2; while (true) { if (*__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 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 _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 void __merge_adaptive(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, _Distance __len1, _Distance __len2, _Pointer __buffer, _Distance __buffer_size) { if (__len1 <= __len2 && __len1 <= __buffer_size) { _Pointer __buffer_end = std::move(__first, __middle, __buffer); std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, __first); } else if (__len2 <= __buffer_size) { _Pointer __buffer_end = std::move(__middle, __last, __buffer); std::__move_merge_adaptive_backward(__first, __middle, __buffer, __buffer_end, __last); } 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); __len22 = std::distance(__middle, __second_cut); } else { __len22 = __len2 / 2; std::advance(__second_cut, __len22); __first_cut = std::upper_bound(__first, __middle, *__second_cut); __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); std::__merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22, __buffer, __buffer_size); } } template 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, __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, __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 void __merge_without_buffer(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, _Distance __len1, _Distance __len2) { if (__len1 == 0 || __len2 == 0) return; if (__len1 + __len2 == 2) { if (*__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); __len22 = std::distance(__middle, __second_cut); } else { __len22 = __len2 / 2; std::advance(__second_cut, __len22); __first_cut = std::upper_bound(__first, __middle, *__second_cut); __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); std::__merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22); } template 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, __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, __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 void inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) { typedef typename iterator_traits<_BidirectionalIterator>::value_type _ValueType; typedef typename iterator_traits<_BidirectionalIterator>::difference_type _DistanceType; ; ; if (__first == __middle || __middle == __last) return; _DistanceType __len1 = std::distance(__first, __middle); _DistanceType __len2 = std::distance(__middle, __last); _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first, __last); if (__buf.begin() == 0) std::__merge_without_buffer(__first, __middle, __last, __len1, __len2); else std::__merge_adaptive(__first, __middle, __last, __len1, __len2, __buf.begin(), _DistanceType(__buf.size())); } template 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); _Temporary_buffer<_BidirectionalIterator, _ValueType> __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); } template _OutputIterator __move_merge(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { while (__first1 != __last1 && __first2 != __last2) { if (*__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 _OutputIterator __move_merge(_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; } return std::move(__first2, __last2, std::move(__first1, __last1, __result)); } template void __merge_sort_loop(_RandomAccessIterator1 __first, _RandomAccessIterator1 __last, _RandomAccessIterator2 __result, _Distance __step_size) { 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); __first += __two_step; } __step_size = std::min(_Distance(__last - __first), __step_size); std::__move_merge(__first, __first + __step_size, __first + __step_size, __last, __result); } template 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 void __chunk_insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Distance __chunk_size) { while (__last - __first >= __chunk_size) { std::__insertion_sort(__first, __first + __chunk_size); __first += __chunk_size; } std::__insertion_sort(__first, __last); } template 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 void __merge_sort_with_buffer(_RandomAccessIterator __first, _RandomAccessIterator __last, _Pointer __buffer) { 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); while (__step_size < __len) { std::__merge_sort_loop(__first, __last, __buffer, __step_size); __step_size *= 2; std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size); __step_size *= 2; } } template 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 void __stable_sort_adaptive(_RandomAccessIterator __first, _RandomAccessIterator __last, _Pointer __buffer, _Distance __buffer_size) { 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); std::__stable_sort_adaptive(__middle, __last, __buffer, __buffer_size); } else { std::__merge_sort_with_buffer(__first, __middle, __buffer); std::__merge_sort_with_buffer(__middle, __last, __buffer); } std::__merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), _Distance(__last - __middle), __buffer, __buffer_size); } template 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 void __inplace_stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { if (__last - __first < 15) { std::__insertion_sort(__first, __last); return; } _RandomAccessIterator __middle = __first + (__last - __first) / 2; std::__inplace_stable_sort(__first, __middle); std::__inplace_stable_sort(__middle, __last); std::__merge_without_buffer(__first, __middle, __last, __middle - __first, __last - __middle); } template 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); } template bool includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (*__first2 < *__first1) return false; else if(*__first1 < *__first2) ++__first1; else ++__first1, ++__first2; return __first2 == __last2; } template bool includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first2, *__first1)) return false; else if(__comp(*__first1, *__first2)) ++__first1; else ++__first1, ++__first2; return __first2 == __last2; } template bool next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { ; if (__first == __last) return false; _BidirectionalIterator __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIterator __ii = __i; --__i; if (*__i < *__ii) { _BidirectionalIterator __j = __last; while (!(*__i < *--__j)) {} std::iter_swap(__i, __j); std::reverse(__ii, __last); return true; } if (__i == __first) { std::reverse(__first, __last); return false; } } } template 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 (!bool(__comp(*__i, *--__j))) {} std::iter_swap(__i, __j); std::reverse(__ii, __last); return true; } if (__i == __first) { std::reverse(__first, __last); return false; } } } template bool prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { ; if (__first == __last) return false; _BidirectionalIterator __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIterator __ii = __i; --__i; if (*__ii < *__i) { _BidirectionalIterator __j = __last; while (!(*--__j < *__i)) {} std::iter_swap(__i, __j); std::reverse(__ii, __last); return true; } if (__i == __first) { std::reverse(__first, __last); return false; } } } template 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 (!bool(__comp(*--__j, *__i))) {} std::iter_swap(__i, __j); std::reverse(__ii, __last); return true; } if (__i == __first) { std::reverse(__first, __last); return false; } } } template _OutputIterator replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __old_value, const _Tp& __new_value) { ; for (; __first != __last; ++__first, ++__result) if (*__first == __old_value) *__result = __new_value; else *__result = *__first; return __result; } template _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; } template inline bool is_sorted(_ForwardIterator __first, _ForwardIterator __last) { return std::is_sorted_until(__first, __last) == __last; } template inline bool is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { return std::is_sorted_until(__first, __last, __comp) == __last; } template _ForwardIterator is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) { ; if (__first == __last) return __last; _ForwardIterator __next = __first; for (++__next; __next != __last; __first = __next, ++__next) if (*__next < *__first) return __next; return __next; } template _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; } template inline pair minmax(const _Tp& __a, const _Tp& __b) { return __b < __a ? pair(__b, __a) : pair(__a, __b); } template inline pair minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) { return __comp(__b, __a) ? pair(__b, __a) : pair(__a, __b); } template pair<_ForwardIterator, _ForwardIterator> minmax_element(_ForwardIterator __first, _ForwardIterator __last) { ; _ForwardIterator __next = __first; if (__first == __last || ++__next == __last) return std::make_pair(__first, __first); _ForwardIterator __min, __max; if (*__next < *__first) { __min = __next; __max = __first; } else { __min = __first; __max = __next; } __first = __next; ++__first; while (__first != __last) { __next = __first; if (++__next == __last) { if (*__first < *__min) __min = __first; else if (!(*__first < *__max)) __max = __first; break; } if (*__next < *__first) { if (*__next < *__min) __min = __next; if (!(*__first < *__max)) __max = __first; } else { if (*__first < *__min) __min = __first; if (!(*__next < *__max)) __max = __next; } __first = __next; ++__first; } return std::make_pair(__min, __max); } template 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); } template inline _Tp min(initializer_list<_Tp> __l) { return *std::min_element(__l.begin(), __l.end()); } template inline _Tp min(initializer_list<_Tp> __l, _Compare __comp) { return *std::min_element(__l.begin(), __l.end(), __comp); } template inline _Tp max(initializer_list<_Tp> __l) { return *std::max_element(__l.begin(), __l.end()); } template inline _Tp max(initializer_list<_Tp> __l, _Compare __comp) { return *std::max_element(__l.begin(), __l.end(), __comp); } template inline pair<_Tp, _Tp> minmax(initializer_list<_Tp> __l) { pair __p = std::minmax_element(__l.begin(), __l.end()); return std::make_pair(*__p.first, *__p.second); } template inline pair<_Tp, _Tp> minmax(initializer_list<_Tp> __l, _Compare __comp) { pair __p = std::minmax_element(__l.begin(), __l.end(), __comp); return std::make_pair(*__p.first, *__p.second); } template bool is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { for (; __first1 != __last1; ++__first1, ++__first2) if (!(*__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(__first1, __scan, *__scan)) continue; auto __matches = std::count(__first2, __last2, *__scan); if (0 == __matches || std::count(__scan, __last1, *__scan) != __matches) return false; } return true; } template bool is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _BinaryPredicate __pred) { for (; __first1 != __last1; ++__first1, ++__first2) if (!bool(__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) { using std::placeholders::_1; if (__scan != std::find_if(__first1, __scan, std::bind(__pred, _1, *__scan))) continue; auto __matches = std::count_if(__first2, __last2, std::bind(__pred, _1, *__scan)); if (0 == __matches || std::count_if(__scan, __last1, std::bind(__pred, _1, *__scan)) != __matches) return false; } return true; } template 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))); } template _Function for_each(_InputIterator __first, _InputIterator __last, _Function __f) { ; for (; __first != __last; ++__first) __f(*__first); return std::move(__f); } template inline _InputIterator find(_InputIterator __first, _InputIterator __last, const _Tp& __val) { ; return std::__find(__first, __last, __val, std::__iterator_category(__first)); } template inline _InputIterator find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { ; return std::__find_if(__first, __last, __pred, std::__iterator_category(__first)); } template _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; } template _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; } template _ForwardIterator adjacent_find(_ForwardIterator __first, _ForwardIterator __last) { ; if (__first == __last) return __last; _ForwardIterator __next = __first; while(++__next != __last) { if (*__first == *__next) return __first; __first = __next; } return __last; } template _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 iterator_traits<_InputIterator>::difference_type count(_InputIterator __first, _InputIterator __last, const _Tp& __value) { ; typename iterator_traits<_InputIterator>::difference_type __n = 0; for (; __first != __last; ++__first) if (*__first == __value) ++__n; return __n; } template 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; } template _ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { ; ; if (__first1 == __last1 || __first2 == __last2) return __first1; _ForwardIterator2 __p1(__first2); if (++__p1 == __last2) return std::find(__first1, __last1, *__first2); _ForwardIterator2 __p; _ForwardIterator1 __current = __first1; for (;;) { __first1 = std::find(__first1, __last1, *__first2); if (__first1 == __last1) return __last1; __p = __p1; __current = __first1; if (++__current == __last1) return __last1; while (*__current == *__p) { if (++__p == __last2) return __first1; if (++__current == __last1) return __last1; } ++__first1; } return __first1; } template _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) { while (__first1 != __last1 && !bool(__predicate(*__first1, *__first2))) ++__first1; return __first1; } _ForwardIterator2 __p; _ForwardIterator1 __current = __first1; for (;;) { while (__first1 != __last1 && !bool(__predicate(*__first1, *__first2))) ++__first1; 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 _ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp& __val) { ; if (__count <= 0) return __first; if (__count == 1) return std::find(__first, __last, __val); return std::__search_n(__first, __last, __count, __val, std::__iterator_category(__first)); } template _ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp& __val, _BinaryPredicate __binary_pred) { ; if (__count <= 0) return __first; if (__count == 1) { while (__first != __last && !bool(__binary_pred(*__first, __val))) ++__first; return __first; } return std::__search_n(__first, __last, __count, __val, __binary_pred, std::__iterator_category(__first)); } template _OutputIterator transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __unary_op) { ; for (; __first != __last; ++__first, ++__result) *__result = __unary_op(*__first); return __result; } template _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; } template 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; } template void replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) { ; for (; __first != __last; ++__first) if (__pred(*__first)) *__first = __new_value; } template void generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) { ; for (; __first != __last; ++__first) *__first = __gen(); } template _OutputIterator generate_n(_OutputIterator __first, _Size __n, _Generator __gen) { for (__decltype(__n + 0) __niter = __n; __niter > 0; --__niter, ++__first) *__first = __gen(); return __first; } template inline _OutputIterator unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { ; if (__first == __last) return __result; return std::__unique_copy(__first, __last, __result, std::__iterator_category(__first), std::__iterator_category(__result)); } template 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, __binary_pred, std::__iterator_category(__first), std::__iterator_category(__result)); } template inline void random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) { ; if (__first != __last) for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1))); } template void random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, _RandomNumberGenerator&& __rand) { ; if (__first == __last) return; for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) std::iter_swap(__i, __first + __rand((__i - __first) + 1)); } template inline _ForwardIterator partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { ; return std::__partition(__first, __last, __pred, std::__iterator_category(__first)); } template inline void partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; ; std::__heap_select(__first, __middle, __last); std::sort_heap(__first, __middle); } template inline void partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, _Compare __comp) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; ; std::__heap_select(__first, __middle, __last, __comp); std::sort_heap(__first, __middle, __comp); } template inline void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; ; if (__first == __last || __nth == __last) return; std::__introselect(__first, __nth, __last, std::__lg(__last - __first) * 2); } template inline void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; ; if (__first == __last || __nth == __last) return; std::__introselect(__first, __nth, __last, std::__lg(__last - __first) * 2, __comp); } template inline void sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; if (__first != __last) { std::__introsort_loop(__first, __last, std::__lg(__last - __first) * 2); std::__final_insertion_sort(__first, __last); } } template inline void sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; ; if (__first != __last) { std::__introsort_loop(__first, __last, std::__lg(__last - __first) * 2, __comp); std::__final_insertion_sort(__first, __last, __comp); } } template _OutputIterator merge(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) { if (*__first2 < *__first1) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; } ++__result; } return std::copy(__first2, __last2, std::copy(__first1, __last1, __result)); } template _OutputIterator merge(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; 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)); } template inline void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType; typedef typename iterator_traits<_RandomAccessIterator>::difference_type _DistanceType; ; _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first, __last); if (__buf.begin() == 0) std::__inplace_stable_sort(__first, __last); else std::__stable_sort_adaptive(__first, __last, __buf.begin(), _DistanceType(__buf.size())); } template 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; ; _Temporary_buffer<_RandomAccessIterator, _ValueType> __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); } template _OutputIterator set_union(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) { if (*__first1 < *__first2) { *__result = *__first1; ++__first1; } else if (*__first2 < *__first1) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; ++__first2; } ++__result; } return std::copy(__first2, __last2, std::copy(__first1, __last1, __result)); } template _OutputIterator set_union(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; 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)); } template _OutputIterator set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) ++__first1; else if (*__first2 < *__first1) ++__first2; else { *__result = *__first1; ++__first1; ++__first2; ++__result; } return __result; } template _OutputIterator set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first1, *__first2)) ++__first1; else if (__comp(*__first2, *__first1)) ++__first2; else { *__result = *__first1; ++__first1; ++__first2; ++__result; } return __result; } template _OutputIterator set_difference(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) { *__result = *__first1; ++__first1; ++__result; } else if (*__first2 < *__first1) ++__first2; else { ++__first1; ++__first2; } return std::copy(__first1, __last1, __result); } template _OutputIterator set_difference(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; 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); } template _OutputIterator set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) { *__result = *__first1; ++__first1; ++__result; } else if (*__first2 < *__first1) { *__result = *__first2; ++__first2; ++__result; } else { ++__first1; ++__first2; } return std::copy(__first2, __last2, std::copy(__first1, __last1, __result)); } template _OutputIterator set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) { typedef typename iterator_traits<_InputIterator1>::value_type _ValueType1; typedef typename iterator_traits<_InputIterator2>::value_type _ValueType2; ; ; 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)); } template _ForwardIterator min_element(_ForwardIterator __first, _ForwardIterator __last) { ; if (__first == __last) return __first; _ForwardIterator __result = __first; while (++__first != __last) if (*__first < *__result) __result = __first; return __result; } template _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; } template _ForwardIterator max_element(_ForwardIterator __first, _ForwardIterator __last) { ; if (__first == __last) return __first; _ForwardIterator __result = __first; while (++__first != __last) if (*__result < *__first) __result = __first; return __result; } template _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; } } # 63 "/usr/include/c++/4.8/algorithm" 2 3 # 83 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 101 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 145 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 155 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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; # 186 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" typedef long long qint64; typedef unsigned long long quint64; typedef qint64 qlonglong; typedef quint64 qulonglong; # 204 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef double qreal; # 241 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 281 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 315 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 328 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 335 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" extern "C" __attribute__((visibility("default"))) const char *qVersion() noexcept; # 358 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 372 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" namespace QtPrivate { template struct AlignOfHelper { char c; T type; AlignOfHelper(); ~AlignOfHelper(); }; template struct AlignOf_Default { enum { Value = sizeof(AlignOfHelper) - sizeof(T) }; }; template struct AlignOf : AlignOf_Default { }; template struct AlignOf : AlignOf {}; template struct AlignOf : AlignOf {}; template struct AlignOf : AlignOf {}; # 413 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" } template 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 QIntegerForSizeof: QIntegerForSize { }; typedef QIntegerForSizeof::Unsigned quintptr; typedef QIntegerForSizeof::Signed qptrdiff; typedef qptrdiff qintptr; # 446 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 464 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 475 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" typedef int QNoImplicitBoolCast; template 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); } # 495 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 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); } # 506 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" template constexpr inline const T &qMin(const T &a, const T &b) { return (a < b) ? a : b; } template constexpr inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; } template constexpr inline const T &qBound(const T &min, const T &val, const T &max) { return qMax(min, qMin(max, val)); } # 534 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" class QDataStream; # 547 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" inline void qt_noop(void) {} # 586 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" __attribute__((visibility("default"))) bool qSharedBuild() noexcept; # 595 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 607 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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; # 635 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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; # 652 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 673 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" __attribute__((visibility("default"))) void qt_check_pointer(const char *, int); __attribute__((visibility("default"))) void qBadAlloc(); # 686 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" template inline T *q_check_ptr(T *p) { do {if(!(p))qt_check_pointer("/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h",688);} while (0); return p; } typedef void (*QFunctionPointer)(); constexpr static inline bool qFuzzyCompare(double p1, double p2) __attribute__ ((__warn_unused_result__)); 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__)); 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__)); constexpr static inline bool qFuzzyIsNull(double d) { return qAbs(d) <= 0.000000000001; } constexpr static inline bool qFuzzyIsNull(float f) __attribute__ ((__warn_unused_result__)); constexpr static inline bool qFuzzyIsNull(float f) { return qAbs(f) <= 0.00001f; } static inline bool qIsNull(double d) __attribute__ ((__warn_unused_result__)); static inline bool qIsNull(double d) { union U { double d; quint64 u; }; U val; val.d = d; return (val.u & static_cast(0x7fffffffffffffffULL)) == 0; } static inline bool qIsNull(float f) __attribute__ ((__warn_unused_result__)); static inline bool qIsNull(float f) { union U { float f; quint32 u; }; U val; val.f = f; return (val.u & 0x7fffffff) == 0; } # 776 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" template inline void qSwap(T &value1, T &value2) { using std::swap; swap(value1, value2); } # 794 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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); # 832 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 851 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" struct QForeachContainerBase {}; template class QForeachContainer : public QForeachContainerBase { public: inline QForeachContainer(const T& t): c(t), brk(0), i(c.begin()), e(c.end()){} const T c; mutable int brk; mutable typename T::const_iterator i, e; inline bool condition() const { return (!brk++ && i != e); } }; template inline T *qForeachPointer(const T &) { return 0; } template inline QForeachContainer qForeachContainerNew(const T& t) { return QForeachContainer(t); } template inline const QForeachContainer *qForeachContainer(const QForeachContainerBase *base, const T *) { return static_cast *>(base); } # 893 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 905 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" template static inline T *qGetPtrHelper(T *ptr) { return ptr; } template static inline typename Wrapper::pointer qGetPtrHelper(const Wrapper &p) { return p.data(); } # 933 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" __attribute__((visibility("default"))) QString qtTrId(const char *id, int n = -1); # 959 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 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; 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(); # 994 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" namespace QtPrivate { template struct QEnableIf; template struct QEnableIf { typedef T Type; }; } # 1019 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobalstatic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 2 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbasicatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic_x86.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/arch/qatomic_x86.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qgenericatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qgenericatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qgenericatomic.h" 2 # 55 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qgenericatomic.h" template struct QAtomicIntegerTraits { enum { IsInteger = 0 }; }; template struct QAtomicAdditiveType { typedef T AdditiveT; static const int AddScale = 1; }; template struct QAtomicAdditiveType { typedef qptrdiff AdditiveT; static const int AddScale = sizeof(T); }; template struct QGenericAtomicOps { template struct AtomicType { typedef T Type; typedef T *PointerType; }; template static void acquireMemoryFence(const T &_q_value) noexcept { BaseClass::orderedMemoryFence(_q_value); } template static void releaseMemoryFence(const T &_q_value) noexcept { BaseClass::orderedMemoryFence(_q_value); } template static void orderedMemoryFence(const T &) noexcept { } template static inline __attribute__((always_inline, gnu_inline)) T load(const T &_q_value) noexcept { return _q_value; } template static inline __attribute__((always_inline, gnu_inline)) void store(T &_q_value, X newValue) noexcept { _q_value = newValue; } template static inline __attribute__((always_inline, gnu_inline)) T loadAcquire(const T &_q_value) noexcept { T tmp = *static_cast(&_q_value); BaseClass::acquireMemoryFence(_q_value); return tmp; } template static inline __attribute__((always_inline, gnu_inline)) void storeRelease(T &_q_value, X newValue) noexcept { BaseClass::releaseMemoryFence(_q_value); *static_cast(&_q_value) = newValue; } static inline constexpr bool isReferenceCountingNative() noexcept { return BaseClass::isFetchAndAddNative(); } static inline constexpr bool isReferenceCountingWaitFree() noexcept { return BaseClass::isFetchAndAddWaitFree(); } template static inline __attribute__((always_inline, gnu_inline)) bool ref(T &_q_value) noexcept { return BaseClass::fetchAndAddRelaxed(_q_value, 1) != T(-1); } template static inline __attribute__((always_inline, gnu_inline)) bool deref(T &_q_value) noexcept { return BaseClass::fetchAndAddRelaxed(_q_value, -1) != 1; } # 144 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qgenericatomic.h" template static inline __attribute__((always_inline, gnu_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 static inline __attribute__((always_inline, gnu_inline)) bool testAndSetRelease(T &_q_value, X expectedValue, X newValue) noexcept { BaseClass::releaseMemoryFence(_q_value); return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); } template static inline __attribute__((always_inline, gnu_inline)) bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue) noexcept { BaseClass::orderedMemoryFence(_q_value); return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); } static inline constexpr bool isFetchAndStoreNative() noexcept { return false; } static inline constexpr bool isFetchAndStoreWaitFree() noexcept { return false; } template static inline __attribute__((always_inline, gnu_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 static inline __attribute__((always_inline, gnu_inline)) T fetchAndStoreAcquire(T &_q_value, X newValue) noexcept { T tmp = BaseClass::fetchAndStoreRelaxed(_q_value, newValue); BaseClass::acquireMemoryFence(_q_value); return tmp; } template static inline __attribute__((always_inline, gnu_inline)) T fetchAndStoreRelease(T &_q_value, X newValue) noexcept { BaseClass::releaseMemoryFence(_q_value); return BaseClass::fetchAndStoreRelaxed(_q_value, newValue); } template static inline __attribute__((always_inline, gnu_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 static inline __attribute__((always_inline, gnu_inline)) T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { for(;;) { T tmp = BaseClass::load(_q_value); if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp + valueToAdd))) return tmp; } } template static inline __attribute__((always_inline, gnu_inline)) T fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { T tmp = BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); BaseClass::acquireMemoryFence(_q_value); return tmp; } template static inline __attribute__((always_inline, gnu_inline)) T fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { BaseClass::releaseMemoryFence(_q_value); return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); } template static inline __attribute__((always_inline, gnu_inline)) T fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { BaseClass::orderedMemoryFence(_q_value); return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qgenericatomic.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/arch/qatomic_x86.h" 2 # 56 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/arch/qatomic_x86.h" template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template struct QBasicAtomicOps: QGenericAtomicOps > { static inline constexpr bool isReferenceCountingNative() noexcept { return true; } static inline constexpr bool isReferenceCountingWaitFree() noexcept { return true; } template static bool ref(T &_q_value) noexcept; template static bool deref(T &_q_value) noexcept; static inline constexpr bool isTestAndSetNative() noexcept { return true; } static inline constexpr bool isTestAndSetWaitFree() noexcept { return true; } template static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) noexcept; static inline constexpr bool isFetchAndStoreNative() noexcept { return true; } static inline constexpr bool isFetchAndStoreWaitFree() noexcept { return true; } template static T fetchAndStoreRelaxed(T &_q_value, T newValue) noexcept; static inline constexpr bool isFetchAndAddNative() noexcept { return true; } static inline constexpr bool isFetchAndAddWaitFree() noexcept { return true; } template static T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept; }; template struct QAtomicOps : QBasicAtomicOps { typedef T Type; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> struct QAtomicIntegerTraits { enum { IsInteger = 1 }; }; template<> template inline bool QBasicAtomicOps<1>::ref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "addb $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<2>::ref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "incw %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<4>::ref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "addl $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<1>::deref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "subb $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<2>::deref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "decw %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<4>::deref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "subl $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template template inline bool QBasicAtomicOps::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) noexcept { unsigned char ret; asm volatile("lock\n" "cmpxchg %3,%2\n" "sete %1\n" : "=a" (newValue), "=qm" (ret), "+m" (_q_value) : "r" (newValue), "0" (expectedValue) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<1>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) noexcept { unsigned char ret; asm volatile("lock\n" "cmpxchg %3,%2\n" "sete %1\n" : "=a" (newValue), "=qm" (ret), "+m" (_q_value) : "q" (newValue), "0" (expectedValue) : "memory"); return ret != 0; } template template inline T QBasicAtomicOps::fetchAndStoreRelaxed(T &_q_value, T newValue) noexcept { asm volatile("xchg %0,%1" : "=r" (newValue), "+m" (_q_value) : "0" (newValue) : "memory"); return newValue; } template<> template inline T QBasicAtomicOps<1>::fetchAndStoreRelaxed(T &_q_value, T newValue) noexcept { asm volatile("xchg %0,%1" : "=q" (newValue), "+m" (_q_value) : "0" (newValue) : "memory"); return newValue; } template template inline T QBasicAtomicOps::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { T result; asm volatile("lock\n" "xadd %0,%1" : "=r" (result), "+m" (_q_value) : "0" (T(valueToAdd * QAtomicAdditiveType::AddScale)) : "memory"); return result; } template<> template inline T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) noexcept { T result; asm volatile("lock\n" "xadd %0,%1" : "=q" (result), "+m" (_q_value) : "0" (T(valueToAdd * QAtomicAdditiveType::AddScale)) : "memory"); return result; } template<> template inline bool QBasicAtomicOps<8>::ref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "addq $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } template<> template inline bool QBasicAtomicOps<8>::deref(T &_q_value) noexcept { unsigned char ret; asm volatile("lock\n" "subq $1, %0\n" "setne %1" : "=m" (_q_value), "=qm" (ret) : "m" (_q_value) : "memory"); return ret != 0; } # 415 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/arch/qatomic_x86.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic_x86.h" 2 # 85 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" 2 # 100 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" # 112 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" # 129 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qbasicatomic.h" template class QBasicAtomicInteger { public: typedef QAtomicOps Ops; typedef char PermittedIntegerType[QAtomicIntegerTraits::IsInteger ? 1 : -1]; 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); } 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); } 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); } 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 QBasicAtomicInt; template class QBasicAtomicPointer { public: typedef X *Type; typedef QAtomicOps Ops; typedef typename Ops::Type AtomicType; AtomicType _q_value; Type load() const noexcept { return _q_value; } void store(Type newValue) noexcept { _q_value = 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); } 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); } 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; }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbasicatomic.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 class QAtomicInt : public QBasicAtomicInt { public: inline QAtomicInt(int value = 0) noexcept { _q_value = value; } inline QAtomicInt(const QAtomicInt &other) noexcept { store(other.load()); } inline QAtomicInt &operator=(const QAtomicInt &other) noexcept { this->store(other.load()); return *this; } # 118 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" }; template class QAtomicPointer : public QBasicAtomicPointer { public: constexpr QAtomicPointer(T *value = 0) noexcept : QBasicAtomicPointer(value) {} # 133 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" inline QAtomicPointer(const QAtomicPointer &other) noexcept { this->store(other.load()); } inline QAtomicPointer &operator=(const QAtomicPointer &other) noexcept { this->store(other.load()); return *this; } # 174 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" }; template inline void qAtomicAssign(T *&d, T *x) { if (d == x) return; x->ref.ref(); if (!d->ref.deref()) delete d; d = x; } template inline void qAtomicDetach(T *&d) { if (d->ref.load() == 1) return; T *x = d; d = new T(*d); if (!x->ref.deref()) delete x; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h" 2 namespace QtGlobalStatic { enum GuardValues { Destroyed = -2, Initialized = -1, Uninitialized = 0, Initializing = 1 }; } # 118 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h" template 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->() { ((!(!isDestroyed())) ? qt_assert_x("Q_GLOBAL_STATIC", "The global static was used after being destroyed","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h",131) : qt_noop()); return innerFunction(); } Type &operator*() { ((!(!isDestroyed())) ? qt_assert_x("Q_GLOBAL_STATIC", "The global static was used after being destroyed","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h",136) : qt_noop()); return *innerFunction(); } }; # 150 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobalstatic.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobalstatic.h" 2 # 1023 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlogging.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qlogging.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qlogging.h" 2 class QDebug; class QNoDebug; enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg }; class QMessageLogContext { QMessageLogContext(const QMessageLogContext &) = delete; QMessageLogContext &operator=(const QMessageLogContext &) = delete; public: constexpr QMessageLogContext() : version(1), line(0), file(0), function(0), category(0) {} constexpr QMessageLogContext(const char *fileName, int lineNumber, const char *functionName, const char *categoryName) : version(1), 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 __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 warning(const char *msg, ...) const __attribute__ ((format (printf, 2, 3))) ; void critical(const char *msg, ...) const __attribute__ ((format (printf, 2, 3))) ; __attribute__((__noreturn__)) void fatal(const char *msg, ...) const noexcept __attribute__ ((format (printf, 2, 3))) ; QDebug debug() const; QDebug warning() const; QDebug critical() const; QNoDebug noDebug() const noexcept; private: QMessageLogContext context; }; # 176 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlogging.h" 2 # 1026 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qflags.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qflags.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qflags.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypeinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" 2 template class QTypeInfo { public: enum { isPointer = false, isComplex = true, isStatic = true, isLarge = (sizeof(T)>sizeof(void*)), isDummy = false, sizeOf = sizeof(T) }; }; template<> class QTypeInfo { public: enum { isPointer = false, isComplex = false, isStatic = false, isLarge = false, isDummy = false, sizeOf = 0 }; }; template class QTypeInfo { public: enum { isPointer = true, isComplex = false, isStatic = false, isLarge = false, isDummy = false, sizeOf = sizeof(T*) }; }; template class QTypeInfoMerger { public: enum { isComplex = QTypeInfo::isComplex || QTypeInfo::isComplex || QTypeInfo::isComplex || QTypeInfo::isComplex, isStatic = QTypeInfo::isStatic || QTypeInfo::isStatic || QTypeInfo::isStatic || QTypeInfo::isStatic, isLarge = sizeof(T) > sizeof(void*), isPointer = false, isDummy = false, sizeOf = sizeof(T) }; }; # 148 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" template class QList; template class QTypeInfo< QList > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QList) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QList) }; }; template class QVector; template class QTypeInfo< QVector > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QVector) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QVector) }; }; template class QQueue; template class QTypeInfo< QQueue > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QQueue) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QQueue) }; }; template class QStack; template class QTypeInfo< QStack > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QStack) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QStack) }; }; template class QLinkedList; template class QTypeInfo< QLinkedList > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QLinkedList) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QLinkedList) }; }; template class QSet; template class QTypeInfo< QSet > { public: enum { isPointer = false, isComplex = true, isStatic = false, isLarge = (sizeof(QSet) > sizeof(void*)), isDummy = false, sizeOf = sizeof(QSet) }; }; enum { Q_COMPLEX_TYPE = 0, Q_PRIMITIVE_TYPE = 0x1, Q_STATIC_TYPE = 0, Q_MOVABLE_TYPE = 0x2, Q_DUMMY_TYPE = 0x4 }; # 188 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" template class QFlags; template class QTypeInfo > { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFlags)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QFlags) }; static inline const char *name() { return "QFlags"; } }; # 214 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(bool)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(bool) }; static inline const char *name() { return "bool"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(char) }; static inline const char *name() { return "char"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(signed char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(signed char) }; static inline const char *name() { return "signed char"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uchar)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(uchar) }; static inline const char *name() { return "uchar"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(short)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(short) }; static inline const char *name() { return "short"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ushort)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(ushort) }; static inline const char *name() { return "ushort"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(int)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(int) }; static inline const char *name() { return "int"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(uint) }; static inline const char *name() { return "uint"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(long) }; static inline const char *name() { return "long"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ulong)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(ulong) }; static inline const char *name() { return "ulong"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(qint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(qint64) }; static inline const char *name() { return "qint64"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(quint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(quint64) }; static inline const char *name() { return "quint64"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(float)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(float) }; static inline const char *name() { return "float"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(double) }; static inline const char *name() { return "double"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(long double) }; static inline const char *name() { return "long double"; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypeinfo.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qflags.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypetraits.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypetraits.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 106 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypetraits.h" 2 namespace QtPrivate { typedef char small_; struct big_ { char dummy[2]; }; template struct identity_ { typedef T type; }; template struct integral_constant { static const T value = v; typedef T value_type; typedef integral_constant type; }; template const T integral_constant::value; typedef integral_constant true_type; typedef integral_constant false_type; typedef true_type true_; typedef false_type false_; template struct if_{ typedef A type; }; template struct if_ { typedef B type; }; template struct type_equals_ : public false_ { }; template struct type_equals_ : public true_ { }; template struct and_ : public integral_constant { }; template struct or_ : public integral_constant { }; template struct is_integral; template struct is_floating_point; template struct is_pointer; template struct is_enum; template struct is_reference; template struct is_pod; template struct has_trivial_constructor; template struct has_trivial_copy; template struct has_trivial_assign; template struct has_trivial_destructor; template struct remove_const; template struct remove_volatile; template struct remove_cv; template struct remove_reference; template struct add_reference; template struct remove_pointer; template struct is_same; template struct is_convertible; template struct is_integral : false_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; # 230 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypetraits.h" template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template struct is_integral : is_integral { }; template struct is_integral : is_integral { }; template struct is_integral : is_integral { }; template<> struct is_integral : true_type { }; template<> struct is_integral : true_type { }; template struct is_floating_point : false_type { }; template<> struct is_floating_point : true_type { }; template<> struct is_floating_point : true_type { }; template<> struct is_floating_point : true_type { }; template struct is_floating_point : is_floating_point { }; template struct is_floating_point : is_floating_point { }; template struct is_floating_point : is_floating_point { }; template struct is_pointer : false_type { }; template struct is_pointer : true_type { }; template struct is_pointer : is_pointer { }; template struct is_pointer : is_pointer { }; template struct is_pointer : is_pointer { }; namespace internal { template struct is_class_or_union { template static small_ tester(void (U::*)()); template static big_ tester(...); static const bool value = sizeof(tester(0)) == sizeof(small_); }; template struct is_enum_impl : is_convertible::type, int> { }; template struct is_enum_impl : false_type { }; } template struct is_enum : internal::is_enum_impl< is_same::value || is_integral::value || is_floating_point::value || is_reference::value || internal::is_class_or_union::value, T> { }; template struct is_enum : is_enum { }; template struct is_enum : is_enum { }; template struct is_enum : is_enum { }; template struct is_reference : false_type {}; template struct is_reference : true_type {}; template struct is_pod : integral_constant::value || is_floating_point::value || is_enum::value || is_pointer::value)> { }; template struct is_pod : is_pod { }; template struct is_pod : is_pod { }; template struct is_pod : is_pod { }; template struct has_trivial_constructor : is_pod { }; template struct has_trivial_constructor > : integral_constant::value && has_trivial_constructor::value)> { }; template struct has_trivial_constructor : has_trivial_constructor { }; template struct has_trivial_constructor : has_trivial_constructor { }; template struct has_trivial_copy : is_pod { }; template struct has_trivial_copy > : integral_constant::value && has_trivial_copy::value)> { }; template struct has_trivial_copy : has_trivial_copy { }; template struct has_trivial_copy : has_trivial_copy { }; template struct has_trivial_assign : is_pod { }; template struct has_trivial_assign > : integral_constant::value && has_trivial_assign::value)> { }; template struct has_trivial_assign : has_trivial_assign { }; template struct has_trivial_destructor : is_pod { }; template struct has_trivial_destructor > : integral_constant::value && has_trivial_destructor::value)> { }; template struct has_trivial_destructor : has_trivial_destructor { }; template struct has_trivial_destructor : has_trivial_destructor { }; template struct remove_const { typedef T type; }; template struct remove_const { typedef T type; }; template struct remove_volatile { typedef T type; }; template struct remove_volatile { typedef T type; }; template struct remove_cv { typedef typename remove_const::type>::type type; }; template struct remove_reference { typedef T type; }; template struct remove_reference { typedef T type; }; template struct add_reference { typedef T& type; }; template struct add_reference { typedef T& type; }; template struct remove_pointer { typedef T type; }; template struct remove_pointer { typedef T type; }; template struct remove_pointer { typedef T type; }; template struct remove_pointer { typedef T type; }; template struct remove_pointer { typedef T type; }; template struct is_same : public false_type { }; template struct is_same : public true_type { }; namespace internal { template struct ConvertHelper { static small_ Test(To); static big_ Test(...); static From Create(); }; } template struct is_convertible : integral_constant::Test( internal::ConvertHelper::Create())) == sizeof(small_)> { }; template struct not_ : integral_constant {}; template struct not_c : integral_constant {}; template struct is_unsigned : integral_constant {}; template struct is_signed : not_< is_unsigned > {}; static_assert(bool(( is_unsigned ::value)), "( is_unsigned::value)"); static_assert(bool((!is_unsigned ::value)), "(!is_unsigned::value)"); static_assert(bool((!is_signed ::value)), "(!is_signed::value)"); static_assert(bool(( is_signed ::value)), "( is_signed::value)"); static_assert(bool(( is_unsigned ::value)), "( is_unsigned::value)"); static_assert(bool((!is_unsigned ::value)), "(!is_unsigned::value)"); static_assert(bool((!is_signed ::value)), "(!is_signed::value)"); static_assert(bool(( is_signed ::value)), "( is_signed::value)"); static_assert(bool(( is_unsigned ::value)), "( is_unsigned::value)"); static_assert(bool((!is_unsigned ::value)), "(!is_unsigned::value)"); static_assert(bool((!is_signed ::value)), "(!is_signed::value)"); static_assert(bool(( is_signed ::value)), "( is_signed::value)"); static_assert(bool(( is_unsigned ::value)), "( is_unsigned::value)"); static_assert(bool((!is_unsigned ::value)), "(!is_unsigned::value)"); static_assert(bool((!is_signed ::value)), "(!is_signed::value)"); static_assert(bool(( is_signed ::value)), "( is_signed::value)"); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypetraits.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qflags.h" 2 class QFlag { int i; public: constexpr inline QFlag(int i); constexpr inline operator int() const { return i; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFlag)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QFlag) }; static inline const char *name() { return "QFlag"; } }; constexpr inline QFlag::QFlag(int ai) : i(ai) {} class QIncompatibleFlag { int i; public: constexpr inline explicit QIncompatibleFlag(int i); constexpr inline operator int() const { return i; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QIncompatibleFlag)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QIncompatibleFlag) }; static inline const char *name() { return "QIncompatibleFlag"; } }; constexpr inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {} template 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::value, unsigned int, signed int >::type Int; typedef Enum enum_type; constexpr inline QFlags(Enum f) : i(Int(f)) {} constexpr inline QFlags(Zero = 0) : i(0) {} constexpr inline QFlags(QFlag f) : i(f) {} inline QFlags &operator&=(int mask) { i &= mask; return *this; } inline QFlags &operator&=(uint mask) { i &= mask; return *this; } inline QFlags &operator&=(Enum mask) { i &= Int(mask); return *this; } inline QFlags &operator|=(QFlags f) { i |= f.i; return *this; } inline QFlags &operator|=(Enum f) { i |= Int(f); return *this; } inline QFlags &operator^=(QFlags f) { i ^= f.i; return *this; } inline QFlags &operator^=(Enum f) { i ^= Int(f); return *this; } constexpr inline operator Int() const { return i; } constexpr inline QFlags operator|(QFlags f) const { return QFlags(QFlag(i | f.i)); } constexpr inline QFlags operator|(Enum f) const { return QFlags(QFlag(i | Int(f))); } constexpr inline QFlags operator^(QFlags f) const { return QFlags(QFlag(i ^ f.i)); } constexpr inline QFlags operator^(Enum f) const { return QFlags(QFlag(i ^ Int(f))); } constexpr inline QFlags operator&(int mask) const { return QFlags(QFlag(i & mask)); } constexpr inline QFlags operator&(uint mask) const { return QFlags(QFlag(i & mask)); } constexpr inline QFlags operator&(Enum f) const { return QFlags(QFlag(i & Int(f))); } constexpr inline QFlags operator~() const { return QFlags(QFlag(~i)); } constexpr inline bool operator!() const { return !i; } constexpr inline bool testFlag(Enum f) const { return (i & Int(f)) == Int(f) && (Int(f) != 0 || i == Int(f) ); } private: Int i; }; # 151 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qflags.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qflags.h" 2 # 1027 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsysinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsysinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsysinfo.h" 2 class QString; class __attribute__((visibility("default"))) QSysInfo { public: enum Sizes { WordSize = (sizeof(void *)<<3) }; # 68 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsysinfo.h" enum Endian { BigEndian, LittleEndian , ByteOrder = LittleEndian }; # 165 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qsysinfo.h" }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsysinfo.h" 2 # 1028 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypeinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypeinfo.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypeinfo.h" 2 # 1029 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qglobal.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 2 # 46 "../../include/QtQml/../../src/qml/qtqmlglobal.h" 2 # 58 "../../include/QtQml/../../src/qml/qtqmlglobal.h" # 2 "../../include/QtQml/qtqmlglobal.h" 2 # 57 "../../include/QtQml/../../src/qml/qml/qqmlprivate.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 59 "../../include/QtQml/../../src/qml/qml/qqmlprivate.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qrefcount.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 { ((!(!isShared())) ? qt_assert("!isShared()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qrefcount.h",76) : qt_noop()); if (sharable) return atomic.testAndSetRelaxed(0, 1); else return atomic.testAndSetRelaxed(1, 0); } bool isStatic() const noexcept { return atomic.load() == -1; } bool isSharable() const noexcept { return atomic.load() != 0; } 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; }; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnamespace.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qnamespace.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qnamespace.h" 2 namespace Qt { # 101 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qnamespace.h" 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 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 MouseButtons; enum Orientation { Horizontal = 0x1, Vertical = 0x2 }; typedef QFlags Orientations; enum FocusPolicy { NoFocus = 0, TabFocus = 0x1, ClickFocus = 0x2, StrongFocus = TabFocus | ClickFocus | 0x8, WheelFocus = StrongFocus | 0x4 }; 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 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, CustomizeWindowHint = 0x02000000, WindowStaysOnBottomHint = 0x04000000, WindowCloseButtonHint = 0x08000000, MacWindowToolBarButtonHint = 0x10000000, BypassGraphicsProxyWidget = 0x20000000, WindowOkButtonHint = 0x00080000, WindowCancelButtonHint = 0x00100000, NoDropShadowWindowHint = 0x40000000, WindowFullscreenButtonHint = 0x80000000 }; typedef QFlags WindowFlags; enum WindowState { WindowNoState = 0x00000000, WindowMinimized = 0x00000001, WindowMaximized = 0x00000002, WindowFullScreen = 0x00000004, WindowActive = 0x00000008 }; typedef QFlags WindowStates; enum ApplicationState { ApplicationSuspended = 0x00000000, ApplicationHidden = 0x00000001, ApplicationInactive = 0x00000002, ApplicationActive = 0x00000004 }; typedef QFlags ApplicationStates; enum ScreenOrientation { PrimaryOrientation = 0x00000000, PortraitOrientation = 0x00000001, LandscapeOrientation = 0x00000002, InvertedPortraitOrientation = 0x00000004, InvertedLandscapeOrientation = 0x00000008 }; typedef QFlags 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_AttributeCount }; enum ApplicationAttribute { AA_ImmediateWidgetCreation = 0, AA_MSWindowsUseDirect3DByDefault = 1, AA_DontShowIconsInMenus = 2, AA_NativeWindows = 3, AA_DontCreateNativeWidgetSiblings = 4, AA_MacPluginApplication = 5, AA_DontUseNativeMenuBar = 6, AA_MacDontSwapCtrlAndMeta = 7, AA_Use96Dpi = 8, AA_X11InitThreads = 10, AA_SynthesizeTouchForUnhandledMouseEvents = 11, AA_SynthesizeMouseForUnhandledTouchEvents = 12, AA_UseHighDpiPixmaps = 13, 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 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, 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_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_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 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 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 }; 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 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, ImPlatformData = 0x80000000, ImQueryInput = ImCursorRectangle | ImCursorPosition | ImSurroundingText | ImCurrentSelection | ImAnchorPosition, ImQueryAll = 0xffffffff }; typedef QFlags 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 InputMethodHints; 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 FindChildOptions; enum DropAction { CopyAction = 0x1, MoveAction = 0x2, LinkAction = 0x4, ActionMask = 0xff, TargetMoveAction = 0x8002, IgnoreAction = 0x0 }; typedef QFlags 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, ItemIsTristate = 64, ItemNeverHasChildren = 128 }; typedef QFlags 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 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 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 Initialization { Uninitialized }; enum CoordinateSystem { DeviceCoordinates, LogicalCoordinates }; enum TouchPointState { TouchPointPressed = 0x01, TouchPointMoved = 0x02, TouchPointStationary = 0x04, TouchPointReleased = 0x08 }; typedef QFlags 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 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 { ScrollBegin = 1, ScrollUpdate, ScrollEnd }; } constexpr inline QFlags operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::MouseButtons::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::MouseButtons::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::Orientations::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::Orientations::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::KeyboardModifiers::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::WindowFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::WindowFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::Alignment::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::Alignment::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ImageConversionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::DockWidgetAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ToolBarAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::WindowStates::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::WindowStates::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::ScreenOrientations::enum_type f1, Qt::ScreenOrientations::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::ScreenOrientations::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ScreenOrientations::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::DropActions::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::DropActions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::ItemFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::ItemFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::MatchFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::MatchFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::TextInteractionFlags::enum_type f1, Qt::TextInteractionFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::TextInteractionFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::TextInteractionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::InputMethodQueries::enum_type f1, Qt::InputMethodQueries::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::InputMethodQueries::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::InputMethodQueries::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::InputMethodHints::enum_type f1, Qt::InputMethodHints::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::InputMethodHints::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::InputMethodHints::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::TouchPointStates::enum_type f1, Qt::TouchPointStates::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::TouchPointStates::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::TouchPointStates::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QFlags operator|(Qt::GestureFlags::enum_type f1, Qt::GestureFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(Qt::GestureFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(Qt::GestureFlags::enum_type f1, int f2) { 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 **); }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnamespace.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qarraydata.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" 2 # 1 "/usr/include/string.h" 1 3 extern "C" { # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 1 3 # 44 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 91 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 116 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 156 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 236 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 345 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 357 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 391 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 409 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 428 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 435 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h" 3 # 33 "/usr/include/string.h" 2 3 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))); # 90 "/usr/include/string.h" 3 } 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))); 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))); # 194 "/usr/include/string.h" 3 # 206 "/usr/include/string.h" 3 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))); # 230 "/usr/include/string.h" 3 } 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))); # 257 "/usr/include/string.h" 3 } 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))); # 309 "/usr/include/string.h" 3 } 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))); # 336 "/usr/include/string.h" 3 } 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))); 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 (); # 432 "/usr/include/string.h" 3 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))); # 483 "/usr/include/string.h" 3 } 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))); # 511 "/usr/include/string.h" 3 } 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))); # 633 "/usr/include/string.h" 3 } # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" 2 struct __attribute__((visibility("default"))) QArrayData { QtPrivate::RefCount ref; int size; uint alloc : 31; uint capacityReserved : 1; qptrdiff offset; void *data() { ((!(size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData))) ? qt_assert("size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData)","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h",62) : qt_noop()); return reinterpret_cast(this) + offset; } const void *data() const { ((!(size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData))) ? qt_assert("size == 0 || offset < 0 || size_t(offset) >= sizeof(QArrayData)","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h",69) : qt_noop()); return reinterpret_cast(this) + offset; } bool isMutable() const { return alloc != 0; } enum AllocationOption { CapacityReserved = 0x1, Unsharable = 0x2, RawData = 0x4, Grow = 0x8, Default = 0 }; typedef QFlags AllocationOptions; size_t detachCapacity(size_t newSize) const { if (capacityReserved && newSize < alloc) return alloc; return newSize; } AllocationOptions detachFlags() const { AllocationOptions result; if (!ref.isSharable()) result |= Unsharable; 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) __attribute__ ((__warn_unused_result__)); static void deallocate(QArrayData *data, size_t objectSize, size_t alignment); static const QArrayData shared_null[2]; static QArrayData *sharedNull() { return const_cast(shared_null); } }; constexpr inline QFlags operator|(QArrayData::AllocationOptions::enum_type f1, QArrayData::AllocationOptions::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QArrayData::AllocationOptions::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QArrayData::AllocationOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } template struct QTypedArrayData : QArrayData { # 203 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" typedef T* iterator; typedef const T* const_iterator; T *data() { return static_cast(QArrayData::data()); } const T *data() const { return static_cast(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(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) { ((!(!result->ref . isShared())) ? qt_assert("!result->ref.isShared()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h",239) : qt_noop()); result->offset = reinterpret_cast(data) - reinterpret_cast(result); result->size = int(n); } return result; } static QTypedArrayData *sharedNull() { static_assert(bool(sizeof(QTypedArrayData) == sizeof(QArrayData)), "sizeof(QTypedArrayData) == sizeof(QArrayData)"); return static_cast(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 struct QStaticArrayData { QArrayData header; T data[N]; }; template struct QArrayDataPointerRef { QTypedArrayData *ptr; }; # 318 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" # 359 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qarraydata.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qarraydata.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 2 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 1 3 # 35 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 54 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 84 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 118 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h" 3 # 52 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 2 # 67 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 class QList; typedef QArrayData QByteArrayData; template struct QStaticByteArrayData { QByteArrayData ba; char data[N + 1]; QByteArrayData *data_ptr() const { ((!(ba . ref . isStatic())) ? qt_assert("ba.ref.isStatic()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h",130) : qt_noop()); return const_cast(&ba); } }; struct QByteArrayDataPtr { QByteArrayData *ptr; }; # 161 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" class __attribute__((visibility("default"))) QByteArray { private: typedef QTypedArrayData Data; public: enum Base64Option { Base64Encoding = 0, Base64UrlEncoding = 1, KeepTrailingEquals = 0, OmitTrailingEquals = 2 }; typedef QFlags Base64Options; inline QByteArray(); QByteArray(const char *, int size = -1); QByteArray(int size, char c); QByteArray(int size, Qt::Initialization); inline QByteArray(const QByteArray &); inline ~QByteArray(); QByteArray &operator=(const QByteArray &); QByteArray &operator=(const char *str); inline QByteArray(QByteArray && other) : d(other.d) { other.d = Data::sharedNull(); } inline QByteArray &operator=(QByteArray &&other) { qSwap(d, other.d); return *this; } inline void swap(QByteArray &other) { 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; QByteArray right(int len) const; QByteArray mid(int index, int len = -1) const; 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); QByteArray toLower() const; QByteArray toUpper() const; QByteArray trimmed() const; QByteArray simplified() const; QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray &prepend(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(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, 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 split(char sep) const; QByteArray repeated(int times) const; # 311 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) 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); static QByteArray number(uint, int base = 10); static QByteArray number(qlonglong, int base = 10); static QByteArray number(qulonglong, int base = 10); static QByteArray number(double, char f = 'g', int prec = 6); static QByteArray fromRawData(const char *, int size); static QByteArray fromBase64(const QByteArray &base64, Base64Options options); static QByteArray fromBase64(const QByteArray &base64); static QByteArray fromHex(const QByteArray &hexEncoded); static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%'); typedef char *iterator; typedef const char *const_iterator; typedef iterator Iterator; typedef const_iterator ConstIterator; iterator begin(); const_iterator begin() const; const_iterator cbegin() const; const_iterator constBegin() const; iterator end(); const_iterator end() const; const_iterator cend() const; const_iterator constEnd() const; typedef const char & const_reference; typedef char & reference; 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); inline int count() const { return d->size; } int length() const { return d->size; } bool isNull() const; inline QByteArray(QByteArrayDataPtr dd) : d(static_cast(dd.ptr)) { } private: operator QNoImplicitBoolCast() const; Data *d; void reallocData(uint alloc, Data::AllocationOptions options); void expand(int i); QByteArray nulTerminated() const; 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 operator|(QByteArray::Base64Options::enum_type f1, QByteArray::Base64Options::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QByteArray::Base64Options::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QByteArray::Base64Options::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } inline QByteArray::QByteArray(): 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 { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h",414) : qt_noop()); return d->data()[i]; } inline char QByteArray::operator[](int i) const { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h",416) : qt_noop()); return d->data()[i]; } inline char QByteArray::operator[](uint i) const { ((!(i < uint(size()))) ? qt_assert("i < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h",418) : qt_noop()); 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) : 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(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) { ((!(i >= 0)) ? qt_assert("i >= 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h",496) : qt_noop()); 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::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; } # 585 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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); } __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(data.constData()), data.size(), compressionLevel); } inline QByteArray qUncompress(const QByteArray& data) { return qUncompress(reinterpret_cast(data.constData()), data.size()); } template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QByteArray)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QByteArray) }; static inline const char *name() { return "QByteArray"; } }; template < > inline void qSwap(QByteArray &value1, QByteArray &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QByteArray>(::QByteArray &value1, ::QByteArray &value2) { value1 . swap(value2); } } # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qchar.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qchar.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qchar.h" 2 class QString; struct QLatin1Char { public: constexpr inline explicit QLatin1Char(char c) : ch(c) {} constexpr inline char toLatin1() const { return ch; } constexpr inline ushort unicode() const { 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() : ucs(0) {} constexpr QChar(ushort rc) : ucs(rc){} constexpr QChar(uchar c, uchar r) : ucs(ushort((r << 8) | c)){} constexpr QChar(short rc) : ucs(ushort(rc)){} constexpr QChar(uint rc) : ucs(ushort(rc & 0xffff)){} constexpr QChar(int rc) : ucs(ushort(rc & 0xffff)){} constexpr QChar(SpecialCharacter s) : ucs(ushort(s)) {} constexpr QChar(QLatin1Char ch) : ucs(ch.unicode()) {} __attribute__ ((__deprecated__)) constexpr explicit QChar(char c) : ucs(uchar(c)) { } __attribute__ ((__deprecated__)) constexpr explicit QChar(uchar c) : 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, ScriptCount }; enum Direction { DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN }; enum Decomposition { NoDecomposition, Canonical, Font, NoBreak, Initial, Medial, Final, Isolated, Circle, Super, Sub, Vertical, Wide, Narrow, Small, Square, Compat, Fraction }; 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 }; inline Category category() const { return QChar::category(ucs); } inline Direction direction() const { return QChar::direction(ucs); } inline Joining joining() const { return QChar::joining(ucs); } inline unsigned char combiningClass() const { return QChar::combiningClass(ucs); } inline QChar mirroredChar() const { return QChar::mirroredChar(ucs); } inline bool hasMirrored() const { return QChar::hasMirrored(ucs); } QString decomposition() const; inline Decomposition decompositionTag() const { return QChar::decompositionTag(ucs); } inline int digitValue() const { return QChar::digitValue(ucs); } inline QChar toLower() const { return QChar::toLower(ucs); } inline QChar toUpper() const { return QChar::toUpper(ucs); } inline QChar toTitleCase() const { return QChar::toTitleCase(ucs); } inline QChar toCaseFolded() const { return QChar::toCaseFolded(ucs); } inline Script script() const { return QChar::script(ucs); } inline UnicodeVersion unicodeVersion() const { return QChar::unicodeVersion(ucs); } inline char toLatin1() const; inline ushort unicode() const { return ucs; } inline ushort &unicode() { return ucs; } static inline QChar fromLatin1(char c); inline bool isNull() const { return ucs == 0; } inline bool isPrint() const { return QChar::isPrint(ucs); } inline bool isSpace() const { return QChar::isSpace(ucs); } inline bool isMark() const { return QChar::isMark(ucs); } inline bool isPunct() const { return QChar::isPunct(ucs); } inline bool isSymbol() const { return QChar::isSymbol(ucs); } inline bool isLetter() const { return QChar::isLetter(ucs); } inline bool isNumber() const { return QChar::isNumber(ucs); } inline bool isLetterOrNumber() const { return QChar::isLetterOrNumber(ucs); } inline bool isDigit() const { return QChar::isDigit(ucs); } inline bool isLower() const { return QChar::isLower(ucs); } inline bool isUpper() const { return QChar::isUpper(ucs); } inline bool isTitleCase() const { return QChar::isTitleCase(ucs); } inline bool isNonCharacter() const { return QChar::isNonCharacter(ucs); } inline bool isHighSurrogate() const { return QChar::isHighSurrogate(ucs); } inline bool isLowSurrogate() const { return QChar::isLowSurrogate(ucs); } inline bool isSurrogate() const { return QChar::isSurrogate(ucs); } inline uchar cell() const { return uchar(ucs & 0xff); } inline uchar row() const { return uchar((ucs>>8)&0xff); } inline void setCell(uchar cell); inline void setRow(uchar row); static inline bool isNonCharacter(uint ucs4) { return ucs4 >= 0xfdd0 && (ucs4 <= 0xfdef || (ucs4 & 0xfffe) == 0xfffe); } static inline bool isHighSurrogate(uint ucs4) { return ((ucs4 & 0xfffffc00) == 0xd800); } static inline bool isLowSurrogate(uint ucs4) { return ((ucs4 & 0xfffffc00) == 0xdc00); } static inline bool isSurrogate(uint ucs4) { return (ucs4 - 0xd800u < 2048u); } static inline bool requiresSurrogates(uint ucs4) { return (ucs4 >= 0x10000); } static inline uint surrogateToUcs4(ushort high, ushort low) { return (uint(high)<<10) + low - 0x35fdc00; } static inline uint surrogateToUcs4(QChar high, QChar low) { return surrogateToUcs4(high.unicode(), low.unicode()); } static inline ushort highSurrogate(uint ucs4) { return ushort((ucs4>>10) + 0xd7c0); } static inline ushort lowSurrogate(uint ucs4) { return ushort(ucs4%0x400 + 0xdc00); } static Category category(uint ucs4); static Direction direction(uint ucs4); static Joining joining(uint ucs4); static unsigned char combiningClass(uint ucs4); static uint mirroredChar(uint ucs4); static bool hasMirrored(uint ucs4); static QString decomposition(uint ucs4); static Decomposition decompositionTag(uint ucs4); static int digitValue(uint ucs4); static uint toLower(uint ucs4); static uint toUpper(uint ucs4); static uint toTitleCase(uint ucs4); static uint toCaseFolded(uint ucs4); static Script script(uint ucs4); static UnicodeVersion unicodeVersion(uint ucs4); static UnicodeVersion currentUnicodeVersion(); static bool isPrint(uint ucs4); static inline bool isSpace(uint ucs4); static bool isMark(uint ucs4); static bool isPunct(uint ucs4); static bool isSymbol(uint ucs4); static inline bool isLetter(uint ucs4); static inline bool isNumber(uint ucs4); static inline bool isLetterOrNumber(uint ucs4); static inline bool isDigit(uint ucs4); static inline bool isLower(uint ucs4); static inline bool isUpper(uint ucs4); static inline bool isTitleCase(uint ucs4); private: static bool isSpace_helper(uint ucs4); static bool isLetter_helper(uint ucs4); static bool isNumber_helper(uint ucs4); static bool isLetterOrNumber_helper(uint ucs4); ushort ucs; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QChar)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QChar) }; static inline const char *name() { return "QChar"; } }; inline char QChar::toLatin1() const { return ucs > 0xff ? '\0' : char(ucs); } inline QChar QChar::fromLatin1(char c) { return QChar(ushort(uchar(c))); } inline void QChar::setCell(uchar acell) { ucs = ushort((ucs & 0xff00) + acell); } inline void QChar::setRow(uchar arow) { ucs = ushort((ushort(arow)<<8) + (ucs&0xff)); } inline bool QChar::isSpace(uint ucs4) { return ucs4 == 0x20 || (ucs4 <= 0x0d && ucs4 >= 0x09) || (ucs4 > 127 && (ucs4 == 0x85 || ucs4 == 0xa0 || QChar::isSpace_helper(ucs4))); } inline bool QChar::isLetter(uint ucs4) { return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) || (ucs4 > 127 && QChar::isLetter_helper(ucs4)); } inline bool QChar::isNumber(uint ucs4) { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::isNumber_helper(ucs4)); } inline bool QChar::isLetterOrNumber(uint ucs4) { return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) || (ucs4 >= '0' && ucs4 <= '9') || (ucs4 > 127 && QChar::isLetterOrNumber_helper(ucs4)); } inline bool QChar::isDigit(uint ucs4) { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::category(ucs4) == Number_DecimalDigit); } inline bool QChar::isLower(uint ucs4) { return (ucs4 <= 'z' && ucs4 >= 'a') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Lowercase); } inline bool QChar::isUpper(uint ucs4) { return (ucs4 <= 'Z' && ucs4 >= 'A') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Uppercase); } inline bool QChar::isTitleCase(uint ucs4) { return ucs4 > 127 && QChar::category(ucs4) == Letter_Titlecase; } inline bool operator==(QChar c1, QChar c2) { return c1.unicode() == c2.unicode(); } inline bool operator!=(QChar c1, QChar c2) { return c1.unicode() != c2.unicode(); } inline bool operator<=(QChar c1, QChar c2) { return c1.unicode() <= c2.unicode(); } inline bool operator>=(QChar c1, QChar c2) { return c1.unicode() >= c2.unicode(); } inline bool operator<(QChar c1, QChar c2) { return c1.unicode() < c2.unicode(); } inline bool operator>(QChar c1, QChar c2) { return c1.unicode() > c2.unicode(); } __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, QChar); __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QChar &); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qchar.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnamespace.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 2 # 60 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" # 73 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" class QCharRef; class QRegExp; class QRegularExpression; class QRegularExpressionMatch; class QString; class QStringList; class QTextCodec; class QStringRef; template class QVector; class QLatin1String { public: constexpr inline explicit QLatin1String(const char *s) : m_size(s ? int(strlen(s)) : 0), m_data(s) {} constexpr inline explicit QLatin1String(const char *s, int sz) : m_size(sz), m_data(s) {} inline explicit QLatin1String(const QByteArray &s) : m_size(int(qstrnlen(s.constData(), s.size()))), m_data(s.constData()) {} inline const char *latin1() const { return m_data; } inline int size() const { return m_size; } inline const char *data() const { return m_data; } inline bool operator==(const QString &s) const; inline bool operator!=(const QString &s) const; inline bool operator>(const QString &s) const; inline bool operator<(const QString &s) const; inline bool operator>=(const QString &s) const; inline bool operator<=(const QString &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 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 { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLatin1String)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QLatin1String) }; static inline const char *name() { return "QLatin1String"; } }; typedef QLatin1String QLatin1Literal; typedef QTypedArrayData QStringData; typedef char16_t qunicodechar; # 155 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" static_assert(bool(sizeof(qunicodechar) == 2), "qunicodechar must typedef an integral type of size 2"); # 174 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" # 185 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" template struct QStaticStringData { QArrayData str; qunicodechar data[N + 1]; QStringData *data_ptr() const { ((!(str . ref . isStatic())) ? qt_assert("str.ref.isStatic()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",202) : qt_noop()); return const_cast(static_cast(&str)); } }; struct QStringDataPtr { QStringData *ptr; }; class __attribute__((visibility("default"))) QString { public: typedef QStringData Data; inline QString(); explicit QString(const QChar *unicode, int size = -1); QString(QChar c); QString(int size, QChar c); inline QString(QLatin1String latin1); inline QString(const QString &); inline ~QString(); QString &operator=(QChar c); QString &operator=(const QString &); inline QString &operator=(QLatin1String latin1); inline QString(QString && other) : d(other.d) { other.d = Data::sharedNull(); } inline QString &operator=(QString &&other) { qSwap(d, other.d); return *this; } inline void swap(QString &other) { 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); 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))) ; 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(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 lastIndexOf(const QRegularExpression &re, int from = -1) 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 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__)); QString toLower() const __attribute__ ((__warn_unused_result__)); QString toUpper() const __attribute__ ((__warn_unused_result__)); QString toCaseFolded() const __attribute__ ((__warn_unused_result__)); QString trimmed() const __attribute__ ((__warn_unused_result__)); QString simplified() const __attribute__ ((__warn_unused_result__)); 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()); } 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 QString &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__)); QStringList split(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__)); QStringList split(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; const ushort *utf16() const; QByteArray toLatin1() const __attribute__ ((__warn_unused_result__)); QByteArray toUtf8() const __attribute__ ((__warn_unused_result__)); QByteArray toLocal8Bit() const __attribute__ ((__warn_unused_result__)); QVector 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 fromLatin1(str.data(), qstrnlen(str.constData(), str.size())); } static inline QString fromUtf8(const QByteArray &str) { return fromUtf8(str.data(), qstrnlen(str.constData(), str.size())); } static inline QString fromLocal8Bit(const QByteArray &str) { return 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); # 516 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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; int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; static inline int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive) { return s1.compare(s2, cs); } static inline int compare(const QString &s1, QLatin1String s2, Qt::CaseSensitivity cs = Qt::CaseSensitive) { return s1.compare(s2, cs); } static inline int compare(QLatin1String s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive) { return -s2.compare(s1, cs); } int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; static int compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity = Qt::CaseSensitive); 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=0, int base=10) const; ushort toUShort(bool *ok=0, int base=10) const; int toInt(bool *ok=0, int base=10) const; uint toUInt(bool *ok=0, int base=10) const; long toLong(bool *ok=0, int base=10) const; ulong toULong(bool *ok=0, int base=10) const; qlonglong toLongLong(bool *ok=0, int base=10) const; qulonglong toULongLong(bool *ok=0, int base=10) const; float toFloat(bool *ok=0) const; double toDouble(bool *ok=0) 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); friend __attribute__((visibility("default"))) bool operator<(const QString &s1, const QString &s2); friend inline bool operator>(const QString &s1, const QString &s2) { return s2 < s1; } friend inline bool operator!=(const QString &s1, const QString &s2) { return !(s1 == s2); } friend inline bool operator<=(const QString &s1, const QString &s2) { return !(s1 > s2); } friend inline bool operator>=(const QString &s1, const QString &s2) { return !(s1 < s2); } bool operator==(QLatin1String s) const; bool operator<(QLatin1String s) const; bool operator>(QLatin1String s) const; inline bool operator!=(QLatin1String s) const { return !operator==(s); } inline bool operator<=(QLatin1String s) const { return !operator>(s); } inline bool operator>=(QLatin1String s) const { return !operator<(s); } 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 &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; iterator begin(); const_iterator begin() const; const_iterator cbegin() const; const_iterator constBegin() const; iterator end(); const_iterator end() const; const_iterator cend() const; const_iterator constEnd() const; 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; # 691 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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: # 714 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" Data *d; void reallocData(uint alloc, bool grow = false); void expand(int i); void updateProperties() const; 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); 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); static int localeAwareCompare_helper(const QChar *data1, int length1, const QChar *data2, int length2); 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 int toUcs4_helper(const ushort *uc, int length, uint *out); 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; 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 { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",755) : qt_noop()); return d->data()[i]; } inline const QChar QString::operator[](int i) const { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",757) : qt_noop()); return d->data()[i]; } inline const QChar QString::operator[](uint i) const { ((!(i < uint(size()))) ? qt_assert("i < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",759) : qt_noop()); return d->data()[i]; } inline bool QString::isEmpty() const { return d->size == 0; } inline const QChar *QString::unicode() const { return reinterpret_cast(d->data()); } inline const QChar *QString::data() const { return reinterpret_cast(d->data()); } inline QChar *QString::data() { detach(); return reinterpret_cast(d->data()); } inline const QChar *QString::constData() const { return reinterpret_cast(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 QString &QString::operator=(QLatin1String s) { *this = fromLatin1(s.latin1(), s.size()); return *this; } inline void QString::clear() { if (!isNull()) *this = QString(); } inline QString::QString(const QString &other) : d(other.d) { ((!(&other != this)) ? qt_assert("&other != this","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",782) : qt_noop()); 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); } inline int QString::toWCharArray(wchar_t *array) const { if (sizeof(wchar_t) == sizeof(QChar)) { memcpy(array, d->data(), sizeof(QChar) * size()); return size(); } return toUcs4_helper(d->data(), size(), reinterpret_cast(array)); } inline QString QString::fromWCharArray(const wchar_t *string, int size) { return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16(reinterpret_cast(string), size) : fromUcs4(reinterpret_cast(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::Joining joining() const { return QChar(*this).joining(); } 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 { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QCharRef)>sizeof(void*)), isPointer = false, 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() : 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(autf16), asize); } inline QCharRef QString::operator[](int i) { ((!(i >= 0)) ? qt_assert("i >= 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",965) : qt_noop()); return QCharRef(*this, i); } inline QCharRef QString::operator[](uint i) { return QCharRef(*this, i); } inline QString::iterator QString::begin() { detach(); return reinterpret_cast(d->data()); } inline QString::const_iterator QString::begin() const { return reinterpret_cast(d->data()); } inline QString::const_iterator QString::cbegin() const { return reinterpret_cast(d->data()); } inline QString::const_iterator QString::constBegin() const { return reinterpret_cast(d->data()); } inline QString::iterator QString::end() { detach(); return reinterpret_cast(d->data() + d->size); } inline QString::const_iterator QString::end() const { return reinterpret_cast(d->data() + d->size); } inline QString::const_iterator QString::cend() const { return reinterpret_cast(d->data() + d->size); } inline QString::const_iterator QString::constEnd() const { return reinterpret_cast(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(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) { return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), s1.size())); } inline bool operator!=(QLatin1String s1, QLatin1String s2) { return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), s1.size())); } inline bool operator<(QLatin1String s1, QLatin1String s2) { 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) { 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) { 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) { 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 { return s == *this; } inline bool QLatin1String::operator!=(const QString &s) const { return s != *this; } inline bool QLatin1String::operator>(const QString &s) const { return s < *this; } inline bool QLatin1String::operator<(const QString &s) const { return s > *this; } inline bool QLatin1String::operator>=(const QString &s) const { return s <= *this; } inline bool QLatin1String::operator<=(const QString &s) const { 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(), 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(), 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 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(), 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(), 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; } # 1140 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" # 1163 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" inline std::string QString::toStdString() const { const QByteArray asc = toUtf8(); return std::string(asc.constData(), asc.length()); } 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())); } __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QString &); __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QString &); template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QString)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QString) }; static inline const char *name() { return "QString"; } }; template < > inline void qSwap(QString &value1, QString &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QString>(::QString &value1, ::QString &value2) { value1 . swap(value2); } } constexpr inline QFlags operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QString::SectionFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QString::SectionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } class __attribute__((visibility("default"))) QStringRef { const QString *m_string; int m_position; int m_size; public: inline QStringRef():m_string(0), m_position(0), m_size(0){} inline QStringRef(const QString *string, int position, int size); inline QStringRef(const QString *string); inline QStringRef(const QStringRef &other) :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} 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; } inline QStringRef &operator=(const QStringRef &other) { m_string = other.m_string; m_position = other.m_position; m_size = other.m_size; return *this; } 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; 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__)); 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(QString::Data::sharedNull()->data()); return m_string->unicode() + m_position; } inline const QChar *data() const { return unicode(); } inline const QChar *constData() const { return unicode(); } QByteArray toLatin1() const __attribute__ ((__warn_unused_result__)); QByteArray toUtf8() const __attribute__ ((__warn_unused_result__)); QByteArray toLocal8Bit() const __attribute__ ((__warn_unused_result__)); QVector toUcs4() const __attribute__ ((__warn_unused_result__)); inline void clear() { m_string = 0; m_position = m_size = 0; } QString toString() const; inline bool isEmpty() const { return m_size == 0; } inline bool isNull() const { return m_string == 0 || m_string->isNull(); } QStringRef appendTo(QString *string) const; inline const QChar at(int i) const { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h",1284) : qt_noop()); return m_string->at(i + m_position); } 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; int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int compare(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; static int compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity = Qt::CaseSensitive); static int compare(const QStringRef &s1, const QStringRef &s2, Qt::CaseSensitivity = Qt::CaseSensitive); static int compare(const QStringRef &s1, QLatin1String s2, Qt::CaseSensitivity cs = Qt::CaseSensitive); 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 = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) const; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QStringRef)>sizeof(void*)), isPointer = false, 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); inline bool operator!=(const QStringRef &s1,const QStringRef &s2) { return !(s1 == s2); } __attribute__((visibility("default"))) bool operator==(const QString &s1,const QStringRef &s2); inline bool operator!=(const QString &s1,const QStringRef &s2) { return !(s1 == s2); } inline bool operator==(const QStringRef &s1,const QString &s2) { return s2 == s1; } inline bool operator!=(const QStringRef &s1,const QString &s2) { return s2 != s1; } __attribute__((visibility("default"))) bool operator==(QLatin1String s1, const QStringRef &s2); inline bool operator!=(QLatin1String s1, const QStringRef &s2) { return !(s1 == s2); } inline bool operator==(const QStringRef &s1, QLatin1String s2) { return s2 == s1; } inline bool operator!=(const QStringRef &s1, QLatin1String s2) { return s2 != s1; } __attribute__((visibility("default"))) bool operator<(const QStringRef &s1,const QStringRef &s2); inline bool operator>(const QStringRef &s1, const QStringRef &s2) { return s2 < s1; } inline bool operator<=(const QStringRef &s1, const QStringRef &s2) { return !(s1 > s2); } inline bool operator>=(const QStringRef &s1, const QStringRef &s2) { 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 { return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } inline int QString::compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity cs) { return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } inline int QStringRef::compare(const QString &s, Qt::CaseSensitivity cs) const { return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } inline int QStringRef::compare(const QStringRef &s, Qt::CaseSensitivity cs) const { return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } inline int QStringRef::compare(QLatin1String s, Qt::CaseSensitivity cs) const { return QString::compare_helper(constData(), length(), s, cs); } inline int QStringRef::compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity cs) { 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) { 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) { 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; } namespace Qt { } # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringbuilder.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringbuilder.h" 1 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringbuilder.h" # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 2 # 53 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringbuilder.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 54 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringbuilder.h" 2 struct __attribute__((visibility("default"))) QAbstractConcatenable { protected: static void convertFromAscii(const char *a, int len, QChar *&out); static inline void convertFromAscii(char a, QChar *&out) { *out++ = QLatin1Char(a); } }; template struct QConcatenable {}; namespace QtStringBuilder { template struct ConvertToTypeHelper { typedef A ConvertTo; }; template struct ConvertToTypeHelper { typedef QString ConvertTo; }; } template struct QStringBuilderCommon { T toUpper() const { return resolved().toUpper(); } T toLower() const { return resolved().toLower(); } protected: const T resolved() const { return *static_cast(this); } }; template struct QStringBuilderBase : public QStringBuilderCommon { }; template struct QStringBuilderBase : public QStringBuilderCommon { QByteArray toLatin1() const { return this->resolved().toLatin1(); } QByteArray toUtf8() const { return this->resolved().toUtf8(); } QByteArray toLocal8Bit() const { return this->resolved().toLocal8Bit(); } }; template class QStringBuilder : public QStringBuilderBase, typename QtStringBuilder::ConvertToTypeHelper::ConvertTo, typename QConcatenable::ConvertTo>::ConvertTo> { public: QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {} private: friend class QByteArray; friend class QString; template T convertTo() const { const uint len = QConcatenable< QStringBuilder >::size(*this); T s(len, Qt::Uninitialized); typename T::iterator d = s.data(); typename T::const_iterator const start = d; QConcatenable< QStringBuilder >::appendTo(*this, d); if (!QConcatenable< QStringBuilder >::ExactSize && int(len) != d - start) { s.resize(d - start); } return s; } typedef QConcatenable > Concatenable; typedef typename Concatenable::ConvertTo ConvertTo; public: operator ConvertTo() const { return convertTo(); } int size() const { return Concatenable::size(*this); } const A &a; const B &b; }; template <> class QStringBuilder : public QStringBuilderBase, QString> { public: QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {} operator QString() const { QString r(a); r += b; return r; } const QString &a; const QString &b; }; template <> class QStringBuilder : public QStringBuilderBase, QByteArray> { public: QStringBuilder(const QByteArray &a_, const QByteArray &b_) : a(a_), b(b_) {} operator QByteArray() const { QByteArray r(a); r += b; return r; } const QByteArray &a; const QByteArray &b; }; template <> struct QConcatenable : 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 { 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 : 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 : 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 : 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 { 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) { if (a.data()) { for (const char *s = a.data(); *s; ) *out++ = QLatin1Char(*s++); } } static inline void appendTo(const QLatin1String a, char *&out) { if (a.data()) { for (const char *s = a.data(); *s; ) *out++ = *s++; } } }; template <> struct QConcatenable : 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(a.constData()), sizeof(QChar) * n); out += n; } }; template <> struct QConcatenable : 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(a.constData()), sizeof(QChar) * n); out += n; } }; template struct QConcatenable : 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 struct QConcatenable : 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 : 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 : 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 struct QConcatenable< QStringBuilder > { typedef QStringBuilder type; typedef typename QtStringBuilder::ConvertToTypeHelper::ConvertTo, typename QConcatenable::ConvertTo>::ConvertTo ConvertTo; enum { ExactSize = QConcatenable::ExactSize && QConcatenable::ExactSize }; static int size(const type &p) { return QConcatenable::size(p.a) + QConcatenable::size(p.b); } template static inline void appendTo(const type &p, T *&out) { QConcatenable::appendTo(p.a, out); QConcatenable::appendTo(p.b, out); } }; template QStringBuilder::type, typename QConcatenable::type> operator%(const A &a, const B &b) { return QStringBuilder::type, typename QConcatenable::type>(a, b); } template QStringBuilder::type, typename QConcatenable::type> operator+(const A &a, const B &b) { return QStringBuilder::type, typename QConcatenable::type>(a, b); } namespace QtStringBuilder { template QByteArray &appendToByteArray(QByteArray &a, const QStringBuilder &b, char) { int len = a.size() + QConcatenable< QStringBuilder >::size(b); a.reserve(len); char *it = a.data() + a.size(); QConcatenable< QStringBuilder >::appendTo(b, it); a.resize(len); return a; } # 407 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringbuilder.h" } template QByteArray &operator+=(QByteArray &a, const QStringBuilder &b) { return QtStringBuilder::appendToByteArray(a, b, typename QConcatenable< QStringBuilder >::ConvertTo::value_type()); } template QString &operator+=(QString &a, const QStringBuilder &b) { int len = a.size() + QConcatenable< QStringBuilder >::size(b); a.reserve(len); QChar *it = a.data() + a.size(); QConcatenable< QStringBuilder >::appendTo(b, it); a.resize(it - a.constData()); return a; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringbuilder.h" 2 # 1439 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstring.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 2 # 626 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qalgorithms.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qalgorithms.h" 2 namespace QAlgorithmsPrivate { template __attribute__ ((__deprecated__)) void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); template __attribute__ ((__deprecated__)) inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy); template __attribute__ ((__deprecated__)) void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); template __attribute__ ((__deprecated__)) inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &); template __attribute__ ((__deprecated__)) RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); template __attribute__ ((__deprecated__)) RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); template __attribute__ ((__deprecated__)) RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); } template __attribute__ ((__deprecated__)) inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) { while (begin != end) *dest++ = *begin++; return dest; } template __attribute__ ((__deprecated__)) inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) { while (begin != end) *--dest = *--end; return dest; } template __attribute__ ((__deprecated__)) inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) { for (; first1 != last1; ++first1, ++first2) if (!(*first1 == *first2)) return false; return true; } template __attribute__ ((__deprecated__)) inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) { for (; first != last; ++first) *first = val; } template __attribute__ ((__deprecated__)) inline void qFill(Container &container, const T &val) { qFill(container.begin(), container.end(), val); } template __attribute__ ((__deprecated__)) inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) { while (first != last && !(*first == val)) ++first; return first; } template __attribute__ ((__deprecated__)) inline typename Container::const_iterator qFind(const Container &container, const T &val) { return qFind(container.constBegin(), container.constEnd(), val); } template __attribute__ ((__deprecated__)) inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) { for (; first != last; ++first) if (*first == value) ++n; } template __attribute__ ((__deprecated__)) inline void qCount(const Container &container, const T &value, Size &n) { qCount(container.constBegin(), container.constEnd(), value, n); } # 155 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qalgorithms.h" template class __attribute__ ((__deprecated__)) qLess { public: inline bool operator()(const T &t1, const T &t2) const { return (t1 < t2); } }; template class __attribute__ ((__deprecated__)) qGreater { public: inline bool operator()(const T &t1, const T &t2) const { return (t2 < t1); } }; template __attribute__ ((__deprecated__)) inline void qSort(RandomAccessIterator start, RandomAccessIterator end) { if (start != end) QAlgorithmsPrivate::qSortHelper(start, end, *start); } template __attribute__ ((__deprecated__)) inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) { if (start != end) QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); } template __attribute__ ((__deprecated__)) inline void qSort(Container &c) { if (!c.empty()) QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); } template __attribute__ ((__deprecated__)) inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end) { if (start != end) QAlgorithmsPrivate::qStableSortHelper(start, end, *start); } template __attribute__ ((__deprecated__)) inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) { if (start != end) QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); } template __attribute__ ((__deprecated__)) inline void qStableSort(Container &c) { if (!c.empty()) QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); } template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) { return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan); } template __attribute__ ((__deprecated__)) typename Container::const_iterator qLowerBound(const Container &container, const T &value) { return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); } template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) { return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan); } template __attribute__ ((__deprecated__)) typename Container::const_iterator qUpperBound(const Container &container, const T &value) { return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); } template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) { return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan); } template __attribute__ ((__deprecated__)) typename Container::const_iterator qBinaryFind(const Container &container, const T &value) { return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess()); } template void qDeleteAll(ForwardIterator begin, ForwardIterator end) { while (begin != end) { delete *begin; ++begin; } } template inline void qDeleteAll(const Container &c) { qDeleteAll(c.begin(), c.end()); } namespace QAlgorithmsPrivate { template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) { qSortHelper(begin, end, dummy, qLess()); } template __attribute__ ((__deprecated__)) void qReverse(RandomAccessIterator begin, RandomAccessIterator end) { --end; while (begin < end) qSwap(*begin++, *end--); } template __attribute__ ((__deprecated__)) void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end) { qReverse(begin, middle); qReverse(middle, end); qReverse(begin, end); } template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) { qStableSortHelper(begin, end, dummy, qLess()); } template __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) 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 __attribute__ ((__deprecated__)) 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; } } constexpr inline uint qPopulationCount(quint32 v) { return __builtin_popcount(v); # 546 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qalgorithms.h" } constexpr inline uint qPopulationCount(quint8 v) { return __builtin_popcount(v); } constexpr inline uint qPopulationCount(quint16 v) { return __builtin_popcount(v); } constexpr inline uint qPopulationCount(quint64 v) { return __builtin_popcountll(v); # 582 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qalgorithms.h" } constexpr inline uint qPopulationCount(long unsigned int v) { return qPopulationCount(static_cast(v)); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiterator.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" 2 # 76 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" # 116 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" # 148 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" # 188 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qiterator.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiterator.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 # 1 "/usr/include/c++/4.8/iterator" 1 3 # 59 "/usr/include/c++/4.8/iterator" 3 3 # 1 "/usr/include/c++/4.8/ostream" 1 3 # 37 "/usr/include/c++/4.8/ostream" 3 3 # 1 "/usr/include/c++/4.8/ios" 1 3 # 37 "/usr/include/c++/4.8/ios" 3 3 # 1 "/usr/include/c++/4.8/bits/ios_base.h" 1 3 # 38 "/usr/include/c++/4.8/bits/ios_base.h" 3 3 # 1 "/usr/include/c++/4.8/bits/locale_classes.h" 1 3 # 38 "/usr/include/c++/4.8/bits/locale_classes.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { class locale { public: typedef int category; class facet; class id; class _Impl; friend class facet; friend class _Impl; template friend bool has_facet(const locale&) throw(); template friend const _Facet& use_facet(const locale&); template friend struct __use_cache; 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); locale() throw(); locale(const locale& __other) throw(); explicit locale(const char* __s); locale(const locale& __base, const char* __s, category __cat); locale(const locale& __base, const locale& __add, category __cat); template locale(const locale& __other, _Facet* __f); ~locale() throw(); const locale& operator=(const locale& __other) throw(); template locale combine(const locale& __other) const; string name() const; bool operator==(const locale& __other) const throw(); bool operator!=(const locale& __other) const throw() { return !(this->operator==(__other)); } template bool operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, const basic_string<_Char, _Traits, _Alloc>& __s2) const; 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; 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); }; 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: 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) { ; if (true) { delete this; } if (false) { } } } facet(const facet&); facet& operator=(const facet&); }; class locale::id { private: friend class locale; friend class locale::_Impl; template friend const _Facet& use_facet(const locale&); template 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 friend bool has_facet(const locale&) throw(); template friend const _Facet& use_facet(const locale&); template 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) { ; if (true) { delete this; } if (false) { } } } _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 void _M_init_facet(_Facet* __facet) { _M_install_facet(&_Facet::id, __facet); } void _M_install_cache(const facet*, size_t); }; template class 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; explicit collate(size_t __refs = 0) : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) { } explicit collate(__c_locale __cloc, size_t __refs = 0) : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) { } int compare(const _CharT* __lo1, const _CharT* __hi1, const _CharT* __lo2, const _CharT* __hi2) const { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } string_type transform(const _CharT* __lo, const _CharT* __hi) const { return this->do_transform(__lo, __hi); } 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); } virtual int do_compare(const _CharT* __lo1, const _CharT* __hi1, const _CharT* __lo2, const _CharT* __hi2) const; virtual string_type do_transform(const _CharT* __lo, const _CharT* __hi) const; virtual long do_hash(const _CharT* __lo, const _CharT* __hi) const; }; template locale::id collate<_CharT>::id; template<> int collate::_M_compare(const char*, const char*) const throw(); template<> size_t collate::_M_transform(char*, const char*, size_t) const throw(); template<> int collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); template<> size_t collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); template class 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); } } protected: virtual ~collate_byname() { } }; } # 1 "/usr/include/c++/4.8/bits/locale_classes.tcc" 1 3 # 38 "/usr/include/c++/4.8/bits/locale_classes.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template locale:: locale(const locale& __other, _Facet* __f) { _M_impl = new _Impl(*__other._M_impl, 1); if (true) { _M_impl->_M_install_facet(&_Facet::id, __f); } if (false) { _M_impl->_M_remove_reference(); ; } delete [] _M_impl->_M_names[0]; _M_impl->_M_names[0] = 0; } template locale locale:: combine(const locale& __other) const { _Impl* __tmp = new _Impl(*_M_impl, 1); if (true) { __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); } if (false) { __tmp->_M_remove_reference(); ; } return locale(__tmp); } template 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); } template 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(__facets[__i])); } template 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(*__facets[__i]); } template int collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () { return 0; } template size_t collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () { return 0; } template 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 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]; if (true) { 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()); } } if (false) { delete [] __c; ; } delete [] __c; return __ret; } template 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:: __digits - 7))); return static_cast(__val); } extern template class collate; extern template class collate_byname; extern template const collate& use_facet >(const locale&); extern template bool has_facet >(const locale&); extern template class collate; extern template class collate_byname; extern template const collate& use_facet >(const locale&); extern template bool has_facet >(const locale&); } # 788 "/usr/include/c++/4.8/bits/locale_classes.h" 2 3 # 42 "/usr/include/c++/4.8/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 }; inline constexpr _Ios_Fmtflags operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } inline constexpr _Ios_Fmtflags operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } inline constexpr _Ios_Fmtflags operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } inline constexpr _Ios_Fmtflags operator~(_Ios_Fmtflags __a) { return _Ios_Fmtflags(~static_cast(__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 }; inline constexpr _Ios_Openmode operator&(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } inline constexpr _Ios_Openmode operator|(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } inline constexpr _Ios_Openmode operator^(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } inline constexpr _Ios_Openmode operator~(_Ios_Openmode __a) { return _Ios_Openmode(~static_cast(__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 }; inline constexpr _Ios_Iostate operator&(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } inline constexpr _Ios_Iostate operator|(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } inline constexpr _Ios_Iostate operator^(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } inline constexpr _Ios_Iostate operator~(_Ios_Iostate __a) { return _Ios_Iostate(~static_cast(__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 }; class ios_base { public: class failure : public exception { public: explicit failure(const string& __str) throw(); virtual ~failure() throw(); virtual const char* what() const throw(); private: string _M_msg; }; 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; 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; 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; 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; enum event { erase_event, imbue_event, copyfmt_event }; typedef void (*event_callback) (event __e, ios_base& __b, int __i); 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; } fmtflags flags(fmtflags __fmtfl) { fmtflags __old = _M_flags; _M_flags = __fmtfl; return __old; } fmtflags setf(fmtflags __fmtfl) { fmtflags __old = _M_flags; _M_flags |= __fmtfl; return __old; } 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; } 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; } static bool sync_with_stdio(bool __sync = true); locale imbue(const locale& __loc) throw(); locale getloc() const { return _M_ios_locale; } const locale& _M_getloc() const { return _M_ios_locale; } static int xalloc() throw(); long& iword(int __ix) { _Words& __word = (__ix < _M_word_size) ? _M_word[__ix] : _M_grow_words(__ix, true); return __word._M_iword; } void*& pword(int __ix) { _Words& __word = (__ix < _M_word_size) ? _M_word[__ix] : _M_grow_words(__ix, false); return __word._M_pword; } virtual ~ios_base(); protected: ios_base() throw (); private: ios_base(const ios_base&); ios_base& operator=(const ios_base&); }; 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; } } # 43 "/usr/include/c++/4.8/ios" 2 3 # 1 "/usr/include/c++/4.8/streambuf" 1 3 # 37 "/usr/include/c++/4.8/streambuf" 3 3 # 44 "/usr/include/c++/4.8/streambuf" 3 namespace std __attribute__ ((__visibility__ ("default"))) { template streamsize __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, basic_streambuf<_CharT, _Traits>*, bool&); template 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 __streambuf_type; friend class basic_ios; friend class basic_istream; friend class basic_ostream; friend class istreambuf_iterator; friend class ostreambuf_iterator; friend streamsize __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, _CharT2*>::__type __copy_move_a2(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, _CharT2*); template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, istreambuf_iterator<_CharT2> >::__type find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, const _CharT2&); template friend basic_istream<_CharT2, _Traits2>& operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); template friend basic_istream<_CharT2, _Traits2>& operator>>(basic_istream<_CharT2, _Traits2>&, basic_string<_CharT2, _Traits2, _Alloc>&); template 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() { } locale pubimbue(const locale& __loc) { locale __tmp(this->getloc()); this->imbue(__loc); _M_buf_locale = __loc; return __tmp; } locale getloc() const { return _M_buf_locale; } basic_streambuf* pubsetbuf(char_type* __s, streamsize __n) { return this->setbuf(__s, __n); } 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); } 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(); } streamsize in_avail() { const streamsize __ret = this->egptr() - this->gptr(); return __ret ? __ret : this->showmanyc(); } 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; } 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; } 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; } streamsize sgetn(char_type* __s, streamsize __n) { return this->xsgetn(__s, __n); } 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; } 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; } 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; } streamsize sputn(const char_type* __s, streamsize __n) { return this->xsputn(__s, __n); } protected: 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()) { } char_type* eback() const { return _M_in_beg; } char_type* gptr() const { return _M_in_cur; } char_type* egptr() const { return _M_in_end; } void gbump(int __n) { _M_in_cur += __n; } void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) { _M_in_beg = __gbeg; _M_in_cur = __gnext; _M_in_end = __gend; } char_type* pbase() const { return _M_out_beg; } char_type* pptr() const { return _M_out_cur; } char_type* epptr() const { return _M_out_end; } void pbump(int __n) { _M_out_cur += __n; } void setp(char_type* __pbeg, char_type* __pend) { _M_out_beg = _M_out_cur = __pbeg; _M_out_end = __pend; } virtual void imbue(const locale& __loc) { } virtual basic_streambuf* setbuf(char_type*, streamsize) { return this; } virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode = ios_base::in | ios_base::out) { return pos_type(off_type(-1)); } virtual pos_type seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out) { return pos_type(off_type(-1)); } virtual int sync() { return 0; } virtual streamsize showmanyc() { return 0; } virtual streamsize xsgetn(char_type* __s, streamsize __n); virtual int_type underflow() { return traits_type::eof(); } 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; } virtual int_type pbackfail(int_type __c = traits_type::eof()) { return traits_type::eof(); } virtual streamsize xsputn(const char_type* __s, streamsize __n); virtual int_type overflow(int_type __c = traits_type::eof()) { return traits_type::eof(); } public: 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; } private: basic_streambuf(const basic_streambuf& __sb) : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur), _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg), _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur), _M_buf_locale(__sb._M_buf_locale) { } basic_streambuf& operator=(const basic_streambuf&) { return *this; }; }; template<> streamsize __copy_streambufs_eof(basic_streambuf* __sbin, basic_streambuf* __sbout, bool& __ineof); template<> streamsize __copy_streambufs_eof(basic_streambuf* __sbin, basic_streambuf* __sbout, bool& __ineof); } # 1 "/usr/include/c++/4.8/bits/streambuf.tcc" 1 3 # 38 "/usr/include/c++/4.8/bits/streambuf.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 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 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 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; extern template streamsize __copy_streambufs(basic_streambuf*, basic_streambuf*); extern template streamsize __copy_streambufs_eof(basic_streambuf*, basic_streambuf*, bool&); extern template class basic_streambuf; extern template streamsize __copy_streambufs(basic_streambuf*, basic_streambuf*); extern template streamsize __copy_streambufs_eof(basic_streambuf*, basic_streambuf*, bool&); } # 829 "/usr/include/c++/4.8/streambuf" 2 3 # 44 "/usr/include/c++/4.8/ios" 2 3 # 1 "/usr/include/c++/4.8/bits/basic_ios.h" 1 3 # 34 "/usr/include/c++/4.8/bits/basic_ios.h" 3 3 # 1 "/usr/include/c++/4.8/bits/locale_facets.h" 1 3 # 38 "/usr/include/c++/4.8/bits/locale_facets.h" 3 3 # 1 "/usr/include/c++/4.8/cwctype" 1 3 # 40 "/usr/include/c++/4.8/cwctype" 3 3 # 1 "/usr/include/wctype.h" 1 3 # 1 "/usr/include/wchar.h" 1 3 # 896 "/usr/include/wchar.h" 3 # 34 "/usr/include/wctype.h" 2 3 typedef unsigned long int wctype_t; # 70 "/usr/include/wctype.h" 3 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 (); 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 (); } 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 "/usr/include/c++/4.8/cwctype" 2 3 # 77 "/usr/include/c++/4.8/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 "/usr/include/c++/4.8/bits/locale_facets.h" 2 3 # 1 "/usr/include/c++/4.8/cctype" 1 3 # 40 "/usr/include/c++/4.8/cctype" 3 3 # 41 "/usr/include/c++/4.8/bits/locale_facets.h" 2 3 # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/ctype_base.h" 1 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; }; } # 42 "/usr/include/c++/4.8/bits/locale_facets.h" 2 3 # 1 "/usr/include/c++/4.8/bits/streambuf_iterator.h" 1 3 # 34 "/usr/include/c++/4.8/bits/streambuf_iterator.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template class istreambuf_iterator : public iterator { 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 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 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, _CharT2*>::__type __copy_move_a2(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, _CharT2*); template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, istreambuf_iterator<_CharT2> >::__type 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 { # 132 "/usr/include/c++/4.8/bits/streambuf_iterator.h" 3 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 inline bool operator==(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { return __a.equal(__b); } template inline bool operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { return !__a.equal(__b); } template class ostreambuf_iterator : public iterator { public: typedef _CharT char_type; typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> streambuf_type; typedef basic_ostream<_CharT, _Traits> ostream_type; template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, ostreambuf_iterator<_CharT2> >::__type 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 __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 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 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 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 __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 "/usr/include/c++/4.8/bits/locale_facets.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 struct __pad { static void _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, const _CharT* __olds, streamsize __newlen, streamsize __oldlen); }; template _CharT* __add_grouping(_CharT* __s, _CharT __sep, const char* __gbeg, size_t __gsize, const _CharT* __first, const _CharT* __last); template inline ostreambuf_iterator<_CharT> __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) { __s._M_put(__ws, __len); return __s; } template inline _OutIter __write(_OutIter __s, const _CharT* __ws, int __len) { for (int __j = 0; __j < __len; __j++, ++__s) *__s = __ws[__j]; return __s; } template class __ctype_abstract_base : public locale::facet, public ctype_base { public: typedef _CharT char_type; bool is(mask __m, char_type __c) const { return this->do_is(__m, __c); } const char_type* is(const char_type *__lo, const char_type *__hi, mask *__vec) const { return this->do_is(__lo, __hi, __vec); } const char_type* scan_is(mask __m, const char_type* __lo, const char_type* __hi) const { return this->do_scan_is(__m, __lo, __hi); } const char_type* scan_not(mask __m, const char_type* __lo, const char_type* __hi) const { return this->do_scan_not(__m, __lo, __hi); } char_type toupper(char_type __c) const { return this->do_toupper(__c); } const char_type* toupper(char_type *__lo, const char_type* __hi) const { return this->do_toupper(__lo, __hi); } char_type tolower(char_type __c) const { return this->do_tolower(__c); } const char_type* tolower(char_type* __lo, const char_type* __hi) const { return this->do_tolower(__lo, __hi); } char_type widen(char __c) const { return this->do_widen(__c); } const char* widen(const char* __lo, const char* __hi, char_type* __to) const { return this->do_widen(__lo, __hi, __to); } char narrow(char_type __c, char __dfault) const { return this->do_narrow(__c, __dfault); } 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() { } virtual bool do_is(mask __m, char_type __c) const = 0; virtual const char_type* do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const = 0; virtual const char_type* do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const = 0; virtual const char_type* do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_toupper(char_type __c) const = 0; virtual const char_type* do_toupper(char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_tolower(char_type __c) const = 0; virtual const char_type* do_tolower(char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_widen(char __c) const = 0; virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; virtual char do_narrow(char_type __c, char __dfault) const = 0; virtual const char_type* do_narrow(const char_type* __lo, const char_type* __hi, char __dfault, char* __to) const = 0; }; template 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 locale::id ctype<_CharT>::id; template<> class ctype : 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(-1)]; mutable char _M_narrow[1 + static_cast(-1)]; mutable char _M_narrow_ok; public: static locale::id id; static const size_t table_size = 1 + static_cast(-1); explicit ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); explicit ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, size_t __refs = 0); inline bool is(mask __m, char __c) const; inline const char* is(const char* __lo, const char* __hi, mask* __vec) const; inline const char* scan_is(mask __m, const char* __lo, const char* __hi) const; inline const char* scan_not(mask __m, const char* __lo, const char* __hi) const; char_type toupper(char_type __c) const { return this->do_toupper(__c); } const char_type* toupper(char_type *__lo, const char_type* __hi) const { return this->do_toupper(__lo, __hi); } char_type tolower(char_type __c) const { return this->do_tolower(__c); } const char_type* tolower(char_type* __lo, const char_type* __hi) const { return this->do_tolower(__lo, __hi); } char_type widen(char __c) const { if (_M_widen_ok) return _M_widen[static_cast(__c)]; this->_M_widen_init(); return this->do_widen(__c); } 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); } char narrow(char_type __c, char __dfault) const { if (_M_narrow[static_cast(__c)]) return _M_narrow[static_cast(__c)]; const char __t = do_narrow(__c, __dfault); if (__t != __dfault) _M_narrow[static_cast(__c)] = __t; return __t; } 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(); 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 { return __c; } virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __to) const { __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } virtual char do_narrow(char_type __c, char __dfault) const { return __c; } 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; }; template<> class ctype : public __ctype_abstract_base { 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(-1)]; mask _M_bit[16]; __wmask_type _M_wmask[16]; public: static locale::id id; explicit ctype(size_t __refs = 0); explicit ctype(__c_locale __cloc, size_t __refs = 0); protected: __wmask_type _M_convert_to_wmask(const mask __m) const throw(); 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* __to) const; virtual char do_narrow(char_type __c, char __dfault) const; 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 class ctype_byname : public ctype<_CharT> { public: typedef typename ctype<_CharT>::mask mask; explicit ctype_byname(const char* __s, size_t __refs = 0); protected: virtual ~ctype_byname() { }; }; template<> class ctype_byname : public ctype { public: explicit ctype_byname(const char* __s, size_t __refs = 0); protected: virtual ~ctype_byname(); }; template<> class ctype_byname : public ctype { public: explicit ctype_byname(const char* __s, size_t __refs = 0); protected: virtual ~ctype_byname(); }; } # 1 "/usr/include/c++/4.8/x86_64-suse-linux/bits/ctype_inline.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { bool ctype:: is(mask __m, char __c) const { return _M_table[static_cast(__c)] & __m; } const char* ctype:: is(const char* __low, const char* __high, mask* __vec) const { while (__low < __high) *__vec++ = _M_table[static_cast(*__low++)]; return __high; } const char* ctype:: scan_is(mask __m, const char* __low, const char* __high) const { while (__low < __high && !(_M_table[static_cast(*__low)] & __m)) ++__low; return __low; } const char* ctype:: scan_not(mask __m, const char* __low, const char* __high) const { while (__low < __high && (_M_table[static_cast(*__low)] & __m) != 0) ++__low; return __low; } } # 1512 "/usr/include/c++/4.8/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 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 __numpunct_cache<_CharT>::~__numpunct_cache() { if (_M_allocated) { delete [] _M_grouping; delete [] _M_truename; delete [] _M_falsename; } } template 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(); } explicit numpunct(__cache_type* __cache, size_t __refs = 0) : facet(__refs), _M_data(__cache) { _M_initialize_numpunct(); } explicit numpunct(__c_locale __cloc, size_t __refs = 0) : facet(__refs), _M_data(0) { _M_initialize_numpunct(__cloc); } char_type decimal_point() const { return this->do_decimal_point(); } char_type thousands_sep() const { return this->do_thousands_sep(); } string grouping() const { return this->do_grouping(); } string_type truename() const { return this->do_truename(); } string_type falsename() const { return this->do_falsename(); } protected: virtual ~numpunct(); virtual char_type do_decimal_point() const { return _M_data->_M_decimal_point; } virtual char_type do_thousands_sep() const { return _M_data->_M_thousands_sep; } virtual string do_grouping() const { return _M_data->_M_grouping; } virtual string_type do_truename() const { return _M_data->_M_truename; } virtual string_type do_falsename() const { return _M_data->_M_falsename; } void _M_initialize_numpunct(__c_locale __cloc = 0); }; template locale::id numpunct<_CharT>::id; template<> numpunct::~numpunct(); template<> void numpunct::_M_initialize_numpunct(__c_locale __cloc); template<> numpunct::~numpunct(); template<> void numpunct::_M_initialize_numpunct(__c_locale __cloc); template 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); } } protected: virtual ~numpunct_byname() { } }; template class num_get : public locale::facet { public: typedef _CharT char_type; typedef _InIter iter_type; static locale::id id; explicit num_get(size_t __refs = 0) : facet(__refs) { } 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); } 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); } 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); } 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() { } iter_type _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, string&) const; template iter_type _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, _ValueT&) const; template 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 __gnu_cxx::__enable_if::__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; } 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; }; template locale::id num_get<_CharT, _InIter>::id; template class num_put : public locale::facet { public: typedef _CharT char_type; typedef _OutIter iter_type; static locale::id id; explicit num_put(size_t __refs = 0) : facet(__refs) { } iter_type put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const { return this->do_put(__s, __io, __fill, __v); } 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); } 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); } 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 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 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() { }; 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 locale::id num_put<_CharT, _OutIter>::id; template inline bool isspace(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::space, __c); } template inline bool isprint(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::print, __c); } template inline bool iscntrl(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::cntrl, __c); } template inline bool isupper(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::upper, __c); } template inline bool islower(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::lower, __c); } template inline bool isalpha(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::alpha, __c); } template inline bool isdigit(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::digit, __c); } template inline bool ispunct(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::punct, __c); } template inline bool isxdigit(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::xdigit, __c); } template inline bool isalnum(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::alnum, __c); } template inline bool isgraph(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::graph, __c); } template inline _CharT toupper(_CharT __c, const locale& __loc) { return use_facet >(__loc).toupper(__c); } template inline _CharT tolower(_CharT __c, const locale& __loc) { return use_facet >(__loc).tolower(__c); } } # 1 "/usr/include/c++/4.8/bits/locale_facets.tcc" 1 3 # 34 "/usr/include/c++/4.8/bits/locale_facets.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template struct __use_cache { const _Facet* operator() (const locale& __loc) const; }; template 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; if (true) { __tmp = new __numpunct_cache<_CharT>; __tmp->_M_cache(__loc); } if (false) { delete __tmp; ; } __loc._M_impl->_M_install_cache(__tmp, __i); } return static_cast*>(__caches[__i]); } }; template void __numpunct_cache<_CharT>::_M_cache(const locale& __loc) { _M_allocated = true; const numpunct<_CharT>& __np = use_facet >(__loc); char* __grouping = 0; _CharT* __truename = 0; _CharT* __falsename = 0; if (true) { _M_grouping_size = __np.grouping().size(); __grouping = new char[_M_grouping_size]; __np.grouping().copy(__grouping, _M_grouping_size); _M_grouping = __grouping; _M_use_grouping = (_M_grouping_size && static_cast(_M_grouping[0]) > 0 && (_M_grouping[0] != __gnu_cxx::__numeric_traits::__max)); _M_truename_size = __np.truename().size(); __truename = new _CharT[_M_truename_size]; __np.truename().copy(__truename, _M_truename_size); _M_truename = __truename; _M_falsename_size = __np.falsename().size(); __falsename = new _CharT[_M_falsename_size]; __np.falsename().copy(__falsename, _M_falsename_size); _M_falsename = __falsename; _M_decimal_point = __np.decimal_point(); _M_thousands_sep = __np.thousands_sep(); const ctype<_CharT>& __ct = use_facet >(__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); } if (false) { delete [] __grouping; delete [] __truename; delete [] __falsename; ; } } __attribute__ ((__pure__)) bool __verify_grouping(const char* __grouping, size_t __grouping_size, const string& __grouping_tmp) throw (); template _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(__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(__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(__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(__sep_pos); if (!std::__verify_grouping(__lc->_M_grouping, __lc->_M_grouping_size, __found_grouping)) __err = ios_base::failbit; } return __beg; } template template _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(__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(__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 _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 _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 _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; } # 729 "/usr/include/c++/4.8/bits/locale_facets.tcc" 3 template _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 _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(__ul); return __beg; } template 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(__w); } template 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 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 template _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(__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 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; } template template _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); int __cs_size = __max_digits * 3; char* __cs = static_cast(__builtin_alloca(__cs_size)); __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, __fbuf, __prec, __v); if (__len >= __cs_size) { __cs_size = __len + 1; __cs = static_cast(__builtin_alloca(__cs_size)); __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, __fbuf, __prec, __v); } # 1024 "/usr/include/c++/4.8/bits/locale_facets.tcc" 3 const ctype<_CharT>& __ctype = use_facet >(__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::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(__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 _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(__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 _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); } # 1151 "/usr/include/c++/4.8/bits/locale_facets.tcc" 3 template _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 _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; } template 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(__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 >(__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 _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(__gbeg[__idx]) > 0 && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__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 numpunct; extern template class numpunct_byname; extern template class num_get; extern template class num_put; extern template class ctype_byname; extern template const ctype& use_facet >(const locale&); extern template const numpunct& use_facet >(const locale&); extern template const num_put& use_facet >(const locale&); extern template const num_get& use_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template class numpunct; extern template class numpunct_byname; extern template class num_get; extern template class num_put; extern template class ctype_byname; extern template const ctype& use_facet >(const locale&); extern template const numpunct& use_facet >(const locale&); extern template const num_put& use_facet >(const locale&); extern template const num_get& use_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); } # 2609 "/usr/include/c++/4.8/bits/locale_facets.h" 2 3 # 38 "/usr/include/c++/4.8/bits/basic_ios.h" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template inline const _Facet& __check_facet(const _Facet* __f) { if (!__f) __throw_bad_cast(); return *__f; } template 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: operator void*() const { return this->fail() ? 0 : const_cast(this); } bool operator!() const { return this->fail(); } iostate rdstate() const { return _M_streambuf_state; } 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) ; } bool good() const { return this->rdstate() == 0; } bool eof() const { return (this->rdstate() & eofbit) != 0; } bool fail() const { return (this->rdstate() & (badbit | failbit)) != 0; } bool bad() const { return (this->rdstate() & badbit) != 0; } iostate exceptions() const { return _M_exception; } 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() { } basic_ostream<_CharT, _Traits>* tie() const { return _M_tie; } 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; } basic_streambuf<_CharT, _Traits>* rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 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; } char_type fill(char_type __ch) { char_type __old = this->fill(); _M_fill = __ch; return __old; } locale imbue(const locale& __loc); char narrow(char_type __c, char __dfault) const { return __check_facet(_M_ctype).narrow(__c, __dfault); } 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); void _M_cache_locale(const locale& __loc); }; } # 1 "/usr/include/c++/4.8/bits/basic_ios.tcc" 1 3 # 34 "/usr/include/c++/4.8/bits/basic_ios.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 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 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 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 void basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) { ios_base::_M_init(); _M_cache_locale(_M_ios_locale); _M_fill = _CharT(); _M_fill_init = false; _M_tie = 0; _M_exception = goodbit; _M_streambuf = __sb; _M_streambuf_state = __sb ? goodbit : badbit; } template 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; extern template class basic_ios; } # 476 "/usr/include/c++/4.8/bits/basic_ios.h" 2 3 # 45 "/usr/include/c++/4.8/ios" 2 3 # 39 "/usr/include/c++/4.8/ostream" 2 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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; explicit basic_ostream(__streambuf_type* __sb) { this->init(__sb); } virtual ~basic_ostream() { } class sentry; friend class sentry; __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; } __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(__n)); } __ostream_type& operator<<(int __n); __ostream_type& operator<<(unsigned int __n) { return _M_insert(static_cast(__n)); } __ostream_type& operator<<(long long __n) { return _M_insert(__n); } __ostream_type& operator<<(unsigned long long __n) { return _M_insert(__n); } __ostream_type& operator<<(double __f) { return _M_insert(__f); } __ostream_type& operator<<(float __f) { return _M_insert(static_cast(__f)); } __ostream_type& operator<<(long double __f) { return _M_insert(__f); } __ostream_type& operator<<(const void* __p) { return _M_insert(__p); } __ostream_type& operator<<(__streambuf_type* __sb); __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); } __ostream_type& write(const char_type* __s, streamsize __n); __ostream_type& flush(); pos_type tellp(); __ostream_type& seekp(pos_type); __ostream_type& seekp(off_type, ios_base::seekdir); protected: basic_ostream() { this->init(0); } template __ostream_type& _M_insert(_ValueT __v); }; template class basic_ostream<_CharT, _Traits>::sentry { bool _M_ok; basic_ostream<_CharT, _Traits>& _M_os; public: explicit sentry(basic_ostream<_CharT, _Traits>& __os); ~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); } } explicit operator bool() const { return _M_ok; } }; template inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) { return __ostream_insert(__out, &__c, 1); } template inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) { return (__out << __out.widen(__c)); } template inline basic_ostream& operator<<(basic_ostream& __out, char __c) { return __ostream_insert(__out, &__c, 1); } template inline basic_ostream& operator<<(basic_ostream& __out, signed char __c) { return (__out << static_cast(__c)); } template inline basic_ostream& operator<<(basic_ostream& __out, unsigned char __c) { return (__out << static_cast(__c)); } template 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(_Traits::length(__s))); return __out; } template basic_ostream<_CharT, _Traits> & operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); template inline basic_ostream& operator<<(basic_ostream& __out, const char* __s) { if (!__s) __out.setstate(ios_base::badbit); else __ostream_insert(__out, __s, static_cast(_Traits::length(__s))); return __out; } template inline basic_ostream& operator<<(basic_ostream& __out, const signed char* __s) { return (__out << reinterpret_cast(__s)); } template inline basic_ostream & operator<<(basic_ostream& __out, const unsigned char* __s) { return (__out << reinterpret_cast(__s)); } template inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { return flush(__os.put(__os.widen('\n'))); } template inline basic_ostream<_CharT, _Traits>& ends(basic_ostream<_CharT, _Traits>& __os) { return __os.put(_CharT()); } template inline basic_ostream<_CharT, _Traits>& flush(basic_ostream<_CharT, _Traits>& __os) { return __os.flush(); } template inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x) { return (__os << __x); } } # 1 "/usr/include/c++/4.8/bits/ostream.tcc" 1 3 # 38 "/usr/include/c++/4.8/bits/ostream.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: _M_insert(_ValueT __v) { sentry __cerb(*this); if (__cerb) { ios_base::iostate __err = ios_base::goodbit; if (true) { const __num_put_type& __np = __check_facet(this->_M_num_put); if (__np.put(*this, *this, this->fill(), __v).failed()) __err |= ios_base::badbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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(static_cast(__n))); else return _M_insert(static_cast(__n)); } template 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(static_cast(__n))); else return _M_insert(static_cast(__n)); } template 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) { if (true) { if (!__copy_streambufs(__sbin, this->rdbuf())) __err |= ios_base::failbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::failbit); } } else if (!__sbin) __err |= ios_base::badbit; if (__err) this->setstate(__err); return *this; } template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: put(char_type __c) { sentry __cerb(*this); if (__cerb) { ios_base::iostate __err = ios_base::goodbit; if (true) { const int_type __put = this->rdbuf()->sputc(__c); if (traits_type::eq_int_type(__put, traits_type::eof())) __err |= ios_base::badbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: write(const _CharT* __s, streamsize __n) { sentry __cerb(*this); if (__cerb) { if (true) { _M_write(__s, __n); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } } return *this; } template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: flush() { ios_base::iostate __err = ios_base::goodbit; if (true) { if (this->rdbuf() && this->rdbuf()->pubsync() == -1) __err |= ios_base::badbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); return *this; } template typename basic_ostream<_CharT, _Traits>::pos_type basic_ostream<_CharT, _Traits>:: tellp() { pos_type __ret = pos_type(-1); if (true) { if (!this->fail()) __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } return __ret; } template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: seekp(pos_type __pos) { ios_base::iostate __err = ios_base::goodbit; if (true) { 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; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); return *this; } template basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: seekp(off_type __off, ios_base::seekdir __dir) { ios_base::iostate __err = ios_base::goodbit; if (true) { 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; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); return *this; } template 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::length(__s); if (true) { 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); } if (false) { __out._M_setstate(ios_base::badbit); ; } if (false) { __out._M_setstate(ios_base::badbit); } } return __out; } extern template class basic_ostream; 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; 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*); } # 610 "/usr/include/c++/4.8/ostream" 2 3 # 65 "/usr/include/c++/4.8/iterator" 2 3 # 1 "/usr/include/c++/4.8/istream" 1 3 # 37 "/usr/include/c++/4.8/istream" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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; __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; } __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); } __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); } __istream_type& operator>>(void*& __p) { return _M_extract(__p); } __istream_type& operator>>(__streambuf_type* __sb); streamsize gcount() const { return _M_gcount; } int_type get(); __istream_type& get(char_type& __c); __istream_type& get(char_type* __s, streamsize __n, char_type __delim); __istream_type& get(char_type* __s, streamsize __n) { return this->get(__s, __n, this->widen('\n')); } __istream_type& get(__streambuf_type& __sb, char_type __delim); __istream_type& get(__streambuf_type& __sb) { return this->get(__sb, this->widen('\n')); } __istream_type& getline(char_type* __s, streamsize __n, char_type __delim); __istream_type& getline(char_type* __s, streamsize __n) { return this->getline(__s, __n, this->widen('\n')); } __istream_type& ignore(streamsize __n, int_type __delim); __istream_type& ignore(streamsize __n); __istream_type& ignore(); int_type peek(); __istream_type& read(char_type* __s, streamsize __n); streamsize readsome(char_type* __s, streamsize __n); __istream_type& putback(char_type __c); __istream_type& unget(); int sync(); pos_type tellg(); __istream_type& seekg(pos_type); __istream_type& seekg(off_type, ios_base::seekdir); protected: basic_istream() : _M_gcount(streamsize(0)) { this->init(0); } template __istream_type& _M_extract(_ValueT& __v); }; template<> basic_istream& basic_istream:: getline(char_type* __s, streamsize __n, char_type __delim); template<> basic_istream& basic_istream:: ignore(streamsize __n); template<> basic_istream& basic_istream:: ignore(streamsize __n, int_type __delim); template<> basic_istream& basic_istream:: getline(char_type* __s, streamsize __n, char_type __delim); template<> basic_istream& basic_istream:: ignore(streamsize __n); template<> basic_istream& basic_istream:: ignore(streamsize __n, int_type __delim); template 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; explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); explicit operator bool() const { return _M_ok; } }; template basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); template inline basic_istream& operator>>(basic_istream& __in, unsigned char& __c) { return (__in >> reinterpret_cast(__c)); } template inline basic_istream& operator>>(basic_istream& __in, signed char& __c) { return (__in >> reinterpret_cast(__c)); } template basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); template<> basic_istream& operator>>(basic_istream& __in, char* __s); template inline basic_istream& operator>>(basic_istream& __in, unsigned char* __s) { return (__in >> reinterpret_cast(__s)); } template inline basic_istream& operator>>(basic_istream& __in, signed char* __s) { return (__in >> reinterpret_cast(__s)); } template 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() { } }; template basic_istream<_CharT, _Traits>& ws(basic_istream<_CharT, _Traits>& __is); template inline basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) { return (__is >> __x); } } # 1 "/usr/include/c++/4.8/bits/istream.tcc" 1 3 # 38 "/usr/include/c++/4.8/bits/istream.tcc" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template 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 template 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; if (true) { const __num_get_type& __ng = __check_facet(this->_M_num_get); __ng.get(*this, 0, *this, __err, __v); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(short& __n) { sentry __cerb(*this, false); if (__cerb) { ios_base::iostate __err = ios_base::goodbit; if (true) { 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::__min) { __err |= ios_base::failbit; __n = __gnu_cxx::__numeric_traits::__min; } else if (__l > __gnu_cxx::__numeric_traits::__max) { __err |= ios_base::failbit; __n = __gnu_cxx::__numeric_traits::__max; } else __n = short(__l); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(int& __n) { sentry __cerb(*this, false); if (__cerb) { ios_base::iostate __err = ios_base::goodbit; if (true) { 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::__min) { __err |= ios_base::failbit; __n = __gnu_cxx::__numeric_traits::__min; } else if (__l > __gnu_cxx::__numeric_traits::__max) { __err |= ios_base::failbit; __n = __gnu_cxx::__numeric_traits::__max; } else __n = int(__l); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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) { if (true) { bool __ineof; if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) __err |= ios_base::failbit; if (__ineof) __err |= ios_base::eofbit; } if (false) { this->_M_setstate(ios_base::failbit); ; } if (false) { this->_M_setstate(ios_base::failbit); } } else if (!__sbout) __err |= ios_base::failbit; if (__err) this->setstate(__err); return *this; } template 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) { if (true) { __c = this->rdbuf()->sbumpc(); if (!traits_type::eq_int_type(__c, __eof)) _M_gcount = 1; else __err |= ios_base::eofbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } } if (!_M_gcount) __err |= ios_base::failbit; if (__err) this->setstate(__err); return __c; } template 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) { if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } } if (!_M_gcount) __err |= ios_base::failbit; if (__err) this->setstate(__err); return *this; } template 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) { if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { 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 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) { if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } } if (!_M_gcount) __err |= ios_base::failbit; if (__err) this->setstate(__err); return *this; } template 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) { if (true) { 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; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { 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 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; if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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)) { ++_M_gcount; __c = __sb->snextc(); } if (__n == __gnu_cxx::__numeric_traits::__max && !traits_type::eq_int_type(__c, __eof)) { _M_gcount = __gnu_cxx::__numeric_traits::__min; __large_ignore = true; } else break; } if (__large_ignore) _M_gcount = __gnu_cxx::__numeric_traits::__max; if (traits_type::eq_int_type(__c, __eof)) __err |= ios_base::eofbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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::__max && !traits_type::eq_int_type(__c, __eof) && !traits_type::eq_int_type(__c, __delim)) { _M_gcount = __gnu_cxx::__numeric_traits::__min; __large_ignore = true; } else break; } if (__large_ignore) _M_gcount = __gnu_cxx::__numeric_traits::__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::__max) ++_M_gcount; __sb->sbumpc(); } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { __c = this->rdbuf()->sgetc(); if (traits_type::eq_int_type(__c, traits_type::eof())) __err |= ios_base::eofbit; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return __c; } template 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; if (true) { _M_gcount = this->rdbuf()->sgetn(__s, __n); if (_M_gcount != __n) __err |= (ios_base::eofbit | ios_base::failbit); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return _M_gcount; } template 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; if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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; } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template int basic_istream<_CharT, _Traits>:: sync(void) { int __ret = -1; sentry __cerb(*this, true); if (__cerb) { ios_base::iostate __err = ios_base::goodbit; if (true) { __streambuf_type* __sb = this->rdbuf(); if (__sb) { if (__sb->pubsync() == -1) __err |= ios_base::badbit; else __ret = 0; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return __ret; } template 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) { if (true) { if (!this->fail()) __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } } return __ret; } template 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; if (true) { 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; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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; } } if (false) { this->_M_setstate(ios_base::badbit); ; } if (false) { this->_M_setstate(ios_base::badbit); } if (__err) this->setstate(__err); } return *this; } template 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; if (true) { 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); } if (false) { __in._M_setstate(ios_base::badbit); ; } if (false) { __in._M_setstate(ios_base::badbit); } if (__err) __in.setstate(__err); } return __in; } template 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) { if (true) { streamsize __num = __in.width(); if (__num <= 0) __num = __gnu_cxx::__numeric_traits::__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); } if (false) { __in._M_setstate(ios_base::badbit); ; } if (false) { __in._M_setstate(ios_base::badbit); } } if (!__extracted) __err |= ios_base::failbit; if (__err) __in.setstate(__err); return __in; } template 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; 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; extern template class basic_istream; 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; } # 880 "/usr/include/c++/4.8/istream" 2 3 # 66 "/usr/include/c++/4.8/iterator" 2 3 # 1 "/usr/include/c++/4.8/bits/stream_iterator.h" 1 3 # 34 "/usr/include/c++/4.8/bits/stream_iterator.h" 3 3 namespace std __attribute__ ((__visibility__ ("default"))) { template, typename _Dist = ptrdiff_t> class istream_iterator : public iterator { 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 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 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 ostream_iterator : public iterator { 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) {} 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 "/usr/include/c++/4.8/iterator" 2 3 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 # 1 "/usr/include/c++/4.8/list" 1 3 # 59 "/usr/include/c++/4.8/list" 3 3 # 1 "/usr/include/c++/4.8/bits/stl_list.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { namespace __detail { 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 struct _List_node : public __detail::_List_node_base { _Tp _M_data; template _List_node(_Args&&... __args) : __detail::_List_node_base(), _M_data(std::forward<_Args>(__args)...) { } }; template 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() : _M_node() { } explicit _List_iterator(__detail::_List_node_base* __x) : _M_node(__x) { } reference operator*() const { return static_cast<_Node*>(_M_node)->_M_data; } pointer operator->() const { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); } _Self& operator++() { _M_node = _M_node->_M_next; return *this; } _Self operator++(int) { _Self __tmp = *this; _M_node = _M_node->_M_next; return __tmp; } _Self& operator--() { _M_node = _M_node->_M_prev; return *this; } _Self operator--(int) { _Self __tmp = *this; _M_node = _M_node->_M_prev; return __tmp; } bool operator==(const _Self& __x) const { return _M_node == __x._M_node; } bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; } __detail::_List_node_base* _M_node; }; template 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() : _M_node() { } explicit _List_const_iterator(const __detail::_List_node_base* __x) : _M_node(__x) { } _List_const_iterator(const iterator& __x) : _M_node(__x._M_node) { } reference operator*() const { return static_cast<_Node*>(_M_node)->_M_data; } pointer operator->() const { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); } _Self& operator++() { _M_node = _M_node->_M_next; return *this; } _Self operator++(int) { _Self __tmp = *this; _M_node = _M_node->_M_next; return __tmp; } _Self& operator--() { _M_node = _M_node->_M_prev; return *this; } _Self operator--(int) { _Self __tmp = *this; _M_node = _M_node->_M_prev; return __tmp; } bool operator==(const _Self& __x) const { return _M_node == __x._M_node; } bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; } const __detail::_List_node_base* _M_node; }; template inline bool operator==(const _List_iterator<_Val>& __x, const _List_const_iterator<_Val>& __y) { return __x._M_node == __y._M_node; } template inline bool operator!=(const _List_iterator<_Val>& __x, const _List_const_iterator<_Val>& __y) { return __x._M_node != __y._M_node; } template class _List_base { protected: typedef typename _Alloc::template rebind<_List_node<_Tp> >::other _Node_alloc_type; typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; struct _List_impl : public _Node_alloc_type { __detail::_List_node_base _M_node; _List_impl() : _Node_alloc_type(), _M_node() { } _List_impl(const _Node_alloc_type& __a) : _Node_alloc_type(__a), _M_node() { } _List_impl(_Node_alloc_type&& __a) : _Node_alloc_type(std::move(__a)), _M_node() { } }; _List_impl _M_impl; _List_node<_Tp>* _M_get_node() { return _M_impl._Node_alloc_type::allocate(1); } void _M_put_node(_List_node<_Tp>* __p) { _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(&_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) : _M_impl(__a) { _M_init(); } _List_base(_List_base&& __x) : _M_impl(std::move(__x._M_get_Node_allocator())) { _M_init(); __detail::_List_node_base::swap(_M_impl._M_node, __x._M_impl._M_node); } ~_List_base() noexcept { _M_clear(); } void _M_clear(); void _M_init() { this->_M_impl._M_node._M_next = &this->_M_impl._M_node; this->_M_impl._M_node._M_prev = &this->_M_impl._M_node; } }; template > 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_reverse_iterator; typedef std::reverse_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; # 498 "/usr/include/c++/4.8/bits/stl_list.h" 3 template _Node* _M_create_node(_Args&&... __args) { _Node* __p = this->_M_get_node(); if (true) { _M_get_Node_allocator().construct(__p, std::forward<_Args>(__args)...); } if (false) { _M_put_node(__p); ; } return __p; } public: list() : _Base() { } explicit list(const allocator_type& __a) : _Base(_Node_alloc_type(__a)) { } explicit list(size_type __n) : _Base() { _M_default_initialize(__n); } list(size_type __n, const value_type& __value, const allocator_type& __a = allocator_type()) : _Base(_Node_alloc_type(__a)) { _M_fill_initialize(__n, __value); } # 574 "/usr/include/c++/4.8/bits/stl_list.h" 3 list(const list& __x) : _Base(__x._M_get_Node_allocator()) { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } list(list&& __x) noexcept : _Base(std::move(__x)) { } list(initializer_list __l, const allocator_type& __a = allocator_type()) : _Base(_Node_alloc_type(__a)) { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } template> list(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Base(_Node_alloc_type(__a)) { _M_initialize_dispatch(__first, __last, __false_type()); } # 639 "/usr/include/c++/4.8/bits/stl_list.h" 3 list& operator=(const list& __x); list& operator=(list&& __x) { this->clear(); this->swap(__x); return *this; } list& operator=(initializer_list __l) { this->assign(__l.begin(), __l.end()); return *this; } void assign(size_type __n, const value_type& __val) { _M_fill_assign(__n, __val); } template> void assign(_InputIterator __first, _InputIterator __last) { _M_assign_dispatch(__first, __last, __false_type()); } # 733 "/usr/include/c++/4.8/bits/stl_list.h" 3 void assign(initializer_list __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 std::distance(begin(), end()); } size_type max_size() const noexcept { return _M_get_Node_allocator().max_size(); } void resize(size_type __new_size); void resize(size_type __new_size, const value_type& __x); # 920 "/usr/include/c++/4.8/bits/stl_list.h" 3 reference front() { return *begin(); } const_reference front() const { return *begin(); } reference back() { iterator __tmp = end(); --__tmp; return *__tmp; } const_reference back() const { const_iterator __tmp = end(); --__tmp; return *__tmp; } 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 void emplace_front(_Args&&... __args) { this->_M_insert(begin(), std::forward<_Args>(__args)...); } void pop_front() { this->_M_erase(begin()); } 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 void emplace_back(_Args&&... __args) { this->_M_insert(end(), std::forward<_Args>(__args)...); } void pop_back() { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } template iterator emplace(iterator __position, _Args&&... __args); iterator insert(iterator __position, const value_type& __x); iterator insert(iterator __position, value_type&& __x) { return emplace(__position, std::move(__x)); } void insert(iterator __p, initializer_list __l) { this->insert(__p, __l.begin(), __l.end()); } void insert(iterator __position, size_type __n, const value_type& __x) { list __tmp(__n, __x, get_allocator()); splice(__position, __tmp); } template> void insert(iterator __position, _InputIterator __first, _InputIterator __last) { list __tmp(__first, __last, get_allocator()); splice(__position, __tmp); } iterator erase(iterator __position); iterator erase(iterator __first, iterator __last) { while (__first != __last) __first = erase(__first); return __last; } void swap(list& __x) { __detail::_List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node); std::__alloc_swap:: _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()); } void clear() noexcept { _Base::_M_clear(); _Base::_M_init(); } void splice(iterator __position, list&& __x) { if (!__x.empty()) { _M_check_equal_allocators(__x); this->_M_transfer(__position, __x.begin(), __x.end()); } } void splice(iterator __position, list& __x) { splice(__position, std::move(__x)); } void splice(iterator __position, list&& __x, iterator __i) { iterator __j = __i; ++__j; if (__position == __i || __position == __j) return; if (this != &__x) _M_check_equal_allocators(__x); this->_M_transfer(__position, __i, __j); } void splice(iterator __position, list& __x, iterator __i) { splice(__position, std::move(__x), __i); } void splice(iterator __position, list&& __x, iterator __first, iterator __last) { if (__first != __last) { if (this != &__x) _M_check_equal_allocators(__x); this->_M_transfer(__position, __first, __last); } } void splice(iterator __position, list& __x, iterator __first, iterator __last) { splice(__position, std::move(__x), __first, __last); } void remove(const _Tp& __value); template void remove_if(_Predicate); void unique(); template void unique(_BinaryPredicate); void merge(list&& __x); void merge(list& __x) { merge(std::move(__x)); } template void merge(list&& __x, _StrictWeakOrdering __comp); template void merge(list& __x, _StrictWeakOrdering __comp) { merge(std::move(__x), __comp); } void reverse() noexcept { this->_M_impl._M_node._M_reverse(); } void sort(); template void sort(_StrictWeakOrdering); protected: template void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) { _M_fill_initialize(static_cast(__n), __x); } template 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); template void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) { _M_fill_assign(__n, __val); } template void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, __false_type); 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); } # 1557 "/usr/include/c++/4.8/bits/stl_list.h" 3 template void _M_insert(iterator __position, _Args&&... __args) { _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); __tmp->_M_hook(__position._M_node); } void _M_erase(iterator __position) { __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) { if (std::__alloc_neq:: _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator())) __throw_runtime_error(("list::_M_check_equal_allocators")); } }; template 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; } template 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 inline bool operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) { return !(__x == __y); } template inline bool operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) { return __y < __x; } template inline bool operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) { return !(__y < __x); } template inline bool operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) { return !(__x < __y); } template inline void swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) { __x.swap(__y); } } # 64 "/usr/include/c++/4.8/list" 2 3 # 1 "/usr/include/c++/4.8/bits/list.tcc" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template void _List_base<_Tp, _Alloc>:: _M_clear() { typedef _List_node<_Tp> _Node; _Node* __cur = static_cast<_Node*>(_M_impl._M_node._M_next); while (__cur != &_M_impl._M_node) { _Node* __tmp = __cur; __cur = static_cast<_Node*>(__cur->_M_next); _M_get_Node_allocator().destroy(__tmp); _M_put_node(__tmp); } } template template typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: emplace(iterator __position, _Args&&... __args) { _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); __tmp->_M_hook(__position._M_node); return iterator(__tmp); } template typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: insert(iterator __position, const value_type& __x) { _Node* __tmp = _M_create_node(__x); __tmp->_M_hook(__position._M_node); return iterator(__tmp); } template typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: erase(iterator __position) { iterator __ret = iterator(__position._M_node->_M_next); _M_erase(__position); return __ret; } template void list<_Tp, _Alloc>:: _M_default_append(size_type __n) { size_type __i = 0; if (true) { for (; __i < __n; ++__i) emplace_back(); } if (false) { for (; __i; --__i) pop_back(); ; } } template 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 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); } # 181 "/usr/include/c++/4.8/bits/list.tcc" 3 template 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 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 template 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 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 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 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); } } template template 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); } } template 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 template 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 template 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 template 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 "/usr/include/c++/4.8/list" 2 3 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 1 3 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h" 1 3 # 1 "/usr/include/limits.h" 1 3 # 113 "/usr/include/limits.h" 3 # 140 "/usr/include/limits.h" 3 # 1 "/usr/include/bits/posix1_lim.h" 1 3 # 1 "/usr/include/bits/local_lim.h" 1 3 # 36 "/usr/include/bits/local_lim.h" 3 # 1 "/usr/include/linux/limits.h" 1 3 # 17 "/usr/include/linux/limits.h" 3 # 39 "/usr/include/bits/local_lim.h" 2 3 # 161 "/usr/include/bits/posix1_lim.h" 2 3 # 144 "/usr/include/limits.h" 2 3 # 1 "/usr/include/bits/posix2_lim.h" 1 3 # 86 "/usr/include/bits/posix2_lim.h" 3 # 148 "/usr/include/limits.h" 2 3 # 1 "/usr/include/bits/xopen_lim.h" 1 3 # 1 "/usr/include/bits/stdio_lim.h" 1 3 # 34 "/usr/include/bits/stdio_lim.h" 3 # 34 "/usr/include/bits/xopen_lim.h" 2 3 # 118 "/usr/include/bits/xopen_lim.h" 3 # 131 "/usr/include/bits/xopen_lim.h" 3 # 142 "/usr/include/bits/xopen_lim.h" 3 # 152 "/usr/include/limits.h" 2 3 # 8 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h" 2 3 # 35 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 2 3 # 84 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 3 # 101 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 3 # 115 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 3 # 148 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 3 # 59 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h" 2 template class QVector; template class QSet; struct __attribute__((visibility("default"))) QListData { 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); 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 { return d->end - d->begin; } inline bool isEmpty() const { return d->end == d->begin; } inline void **at(int i) const { return d->array + d->begin + i; } inline void **begin() const { return d->array + d->begin; } inline void **end() const { return d->array + d->end; } }; template class QList { struct Node { void *v; inline T &t() { return *reinterpret_cast(QTypeInfo::isLarge || QTypeInfo::isStatic ? v : this); } }; union { QListData p; QListData::Data *d; }; public: inline QList() : d(const_cast(&QListData::shared_null)) { } QList(const QList &l); ~QList(); QList &operator=(const QList &l); inline QList(QList &&other) : d(other.d) { other.d = const_cast(&QListData::shared_null); } inline QList &operator=(QList &&other) { qSwap(d, other.d); return *this; } inline void swap(QList &other) { qSwap(d, other.d); } inline QList(std::initializer_list args) : d(const_cast(&QListData::shared_null)) { std::copy(args.begin(), args.end(), std::back_inserter(*this)); } bool operator==(const QList &l) const; inline bool operator!=(const QList &l) const { return !(*this == l); } inline int size() const { 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 &other) const { return d == other.d; } inline bool isEmpty() const { 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); 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() : i(0) {} inline iterator(Node *n) : i(n) {} inline iterator(const iterator &o): i(o.i){} inline T &operator*() const { return i->t(); } inline T *operator->() const { return &i->t(); } inline T &operator[](int j) const { return i[j].t(); } 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) { 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+=(int j) { i+=j; return *this; } inline iterator &operator-=(int j) { i-=j; return *this; } inline iterator operator+(int j) const { return iterator(i+j); } inline iterator operator-(int 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() : i(0) {} inline const_iterator(Node *n) : i(n) {} inline const_iterator(const const_iterator &o): i(o.i) {} inline const_iterator(const iterator &o): i(o.i) {} inline const T &operator*() const { return i->t(); } inline const T *operator->() const { return &i->t(); } inline const T &operator[](int j) const { return i[j].t(); } 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) { 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+=(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(i+j); } inline const_iterator operator-(int j) const { return const_iterator(i-j); } inline int operator-(const_iterator j) const { return i - j.i; } }; friend class const_iterator; inline iterator begin() { detach(); return reinterpret_cast(p.begin()); } inline const_iterator begin() const { return reinterpret_cast(p.begin()); } inline const_iterator cbegin() const { return reinterpret_cast(p.begin()); } inline const_iterator constBegin() const { return reinterpret_cast(p.begin()); } inline iterator end() { detach(); return reinterpret_cast(p.end()); } inline const_iterator end() const { return reinterpret_cast(p.end()); } inline const_iterator cend() const { return reinterpret_cast(p.end()); } inline const_iterator constEnd() const { return reinterpret_cast(p.end()); } 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() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",287) : qt_noop()); return *begin(); } inline const T& first() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",288) : qt_noop()); return at(0); } T& last() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",289) : qt_noop()); return *(--end()); } const T& last() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",290) : qt_noop()); return at(count() - 1); } inline void removeFirst() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",291) : qt_noop()); erase(begin()); } inline void removeLast() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",292) : qt_noop()); 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 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 &operator+=(const QList &l); inline QList operator+(const QList &l) const { QList n = *this; n += l; return n; } inline QList &operator+=(const T &t) { append(t); return *this; } inline QList &operator<< (const T &t) { append(t); return *this; } inline QList &operator<<(const QList &l) { *this += l; return *this; } QVector toVector() const; QSet toSet() const; static QList fromVector(const QVector &vector); static QList fromSet(const QSet &set); static inline QList fromStdList(const std::list &list) { QList tmp; std::copy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } inline std::list toStdList() const { std::list 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 { return (constBegin().i <= i.i) && (i.i <= constEnd().i); } }; template inline void QList::node_construct(Node *n, const T &t) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t); else if (QTypeInfo::isComplex) new (n) T(t); else *reinterpret_cast(n) = t; } template inline void QList::node_destruct(Node *n) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) delete reinterpret_cast(n->v); else if (QTypeInfo::isComplex) reinterpret_cast(n)->~T(); } template inline void QList::node_copy(Node *from, Node *to, Node *src) { Node *current = from; if (QTypeInfo::isLarge || QTypeInfo::isStatic) { if (true) { while(current != to) { current->v = new T(*reinterpret_cast(src->v)); ++current; ++src; } } else { while (current-- != from) delete reinterpret_cast(current->v); qt_noop(); } } else if (QTypeInfo::isComplex) { if (true) { while(current != to) { new (current) T(*reinterpret_cast(src)); ++current; ++src; } } else { while (current-- != from) (reinterpret_cast(current))->~T(); qt_noop(); } } else { if (src != from && to - from > 0) memcpy(from, src, (to - from) * sizeof(Node)); } } template inline void QList::node_destruct(Node *from, Node *to) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) while(from != to) --to, delete reinterpret_cast(to->v); else if (QTypeInfo::isComplex) while (from != to) --to, reinterpret_cast(to)->~T(); } template inline QList &QList::operator=(const QList &l) { if (d != l.d) { QList tmp(l); tmp.swap(*this); } return *this; } template inline typename QList::iterator QList::insert(iterator before, const T &t) { ((!(isValidIterator(before))) ? qt_assert_x("QList::insert", "The specified iterator argument 'before' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",442) : qt_noop()); int iBefore = int(before.i - reinterpret_cast(p.begin())); Node *n = 0; if (d->ref.isShared()) n = detach_helper_grow(iBefore, 1); else n = reinterpret_cast(p.insert(iBefore)); if (true) { node_construct(n, t); } else { p.remove(iBefore); qt_noop(); } return n; } template inline typename QList::iterator QList::erase(iterator it) { ((!(isValidIterator(it))) ? qt_assert_x("QList::erase", "The specified iterator argument 'it' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",461) : qt_noop()); if (d->ref.isShared()) { int offset = int(it.i - reinterpret_cast(p.begin())); it = begin(); it += offset; } node_destruct(it.i); return reinterpret_cast(p.erase(reinterpret_cast(it.i))); } template inline const T &QList::at(int i) const { ((!(i >= 0 && i < p . size())) ? qt_assert_x("QList::at", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",472) : qt_noop()); return reinterpret_cast(p.at(i))->t(); } template inline const T &QList::operator[](int i) const { ((!(i >= 0 && i < p . size())) ? qt_assert_x("QList::operator[]", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",476) : qt_noop()); return reinterpret_cast(p.at(i))->t(); } template inline T &QList::operator[](int i) { ((!(i >= 0 && i < p . size())) ? qt_assert_x("QList::operator[]", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",480) : qt_noop()); detach(); return reinterpret_cast(p.at(i))->t(); } template inline void QList::removeAt(int i) { if(i >= 0 && i < p.size()) { detach(); node_destruct(reinterpret_cast(p.at(i))); p.remove(i); } } template inline T QList::takeAt(int i) { ((!(i >= 0 && i < p . size())) ? qt_assert_x("QList::take", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",488) : qt_noop()); detach(); Node *n = reinterpret_cast(p.at(i)); T t = n->t(); node_destruct(n); p.remove(i); return t; } template inline T QList::takeFirst() { T t = first(); removeFirst(); return t; } template inline T QList::takeLast() { T t = last(); removeLast(); return t; } template void QList::reserve(int alloc) { if (d->alloc < alloc) { if (d->ref.isShared()) detach_helper(alloc); else p.realloc(alloc); } } template void QList::append(const T &t) { if (d->ref.isShared()) { Node *n = detach_helper_grow(2147483647, 1); if (true) { node_construct(n, t); } else { --d->end; qt_noop(); } } else { if (QTypeInfo::isLarge || QTypeInfo::isStatic) { Node *n = reinterpret_cast(p.append()); if (true) { node_construct(n, t); } else { --d->end; qt_noop(); } } else { Node *n, copy; node_construct(©, t); if (true) { n = reinterpret_cast(p.append());; } else { node_destruct(©); qt_noop(); } *n = copy; } } } template inline void QList::prepend(const T &t) { if (d->ref.isShared()) { Node *n = detach_helper_grow(0, 1); if (true) { node_construct(n, t); } else { ++d->begin; qt_noop(); } } else { if (QTypeInfo::isLarge || QTypeInfo::isStatic) { Node *n = reinterpret_cast(p.prepend()); if (true) { node_construct(n, t); } else { ++d->begin; qt_noop(); } } else { Node *n, copy; node_construct(©, t); if (true) { n = reinterpret_cast(p.prepend());; } else { node_destruct(©); qt_noop(); } *n = copy; } } } template inline void QList::insert(int i, const T &t) { if (d->ref.isShared()) { Node *n = detach_helper_grow(i, 1); if (true) { node_construct(n, t); } else { p.remove(i); qt_noop(); } } else { if (QTypeInfo::isLarge || QTypeInfo::isStatic) { Node *n = reinterpret_cast(p.insert(i)); if (true) { node_construct(n, t); } else { p.remove(i); qt_noop(); } } else { Node *n, copy; node_construct(©, t); if (true) { n = reinterpret_cast(p.insert(i));; } else { node_destruct(©); qt_noop(); } *n = copy; } } } template inline void QList::replace(int i, const T &t) { ((!(i >= 0 && i < p . size())) ? qt_assert_x("QList::replace", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",614) : qt_noop()); detach(); reinterpret_cast(p.at(i))->t() = t; } template inline void QList::swap(int i, int j) { ((!(i >= 0 && i < p . size() && j >= 0 && j < p . size())) ? qt_assert_x("QList::swap", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",623) : qt_noop()); detach(); void *t = d->array[d->begin + i]; d->array[d->begin + i] = d->array[d->begin + j]; d->array[d->begin + j] = t; } template inline void QList::move(int from, int to) { ((!(from >= 0 && from < p . size() && to >= 0 && to < p . size())) ? qt_assert_x("QList::move", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",634) : qt_noop()); detach(); p.move(from, to); } template QList QList::mid(int pos, int alength) const { if (alength < 0 || pos > size() - alength) alength = size() - pos; if (pos == 0 && alength == size()) return *this; QList cpy; if (alength <= 0) return cpy; cpy.reserve(alength); cpy.d->end = alength; if (true) { cpy.node_copy(reinterpret_cast(cpy.p.begin()), reinterpret_cast(cpy.p.end()), reinterpret_cast(p.begin() + pos)); } else { cpy.d->end = 0; qt_noop(); } return cpy; } template T QList::value(int i) const { if (i < 0 || i >= p.size()) { return T(); } return reinterpret_cast(p.at(i))->t(); } template T QList::value(int i, const T& defaultValue) const { return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast(p.at(i))->t()); } template typename QList::Node *QList::detach_helper_grow(int i, int c) { Node *n = reinterpret_cast(p.begin()); QListData::Data *x = p.detach_grow(&i, c); if (true) { node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.begin() + i), n); } else { p.dispose(); d = x; qt_noop(); } if (true) { node_copy(reinterpret_cast(p.begin() + i + c), reinterpret_cast(p.end()), n + i); } else { node_destruct(reinterpret_cast(p.begin()), reinterpret_cast(p.begin() + i)); p.dispose(); d = x; qt_noop(); } if (!x->ref.deref()) dealloc(x); return reinterpret_cast(p.begin() + i); } template void QList::detach_helper(int alloc) { Node *n = reinterpret_cast(p.begin()); QListData::Data *x = p.detach(alloc); if (true) { node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.end()), n); } else { p.dispose(); d = x; qt_noop(); } if (!x->ref.deref()) dealloc(x); } template void QList::detach_helper() { detach_helper(d->alloc); } template QList::QList(const QList &l) : d(l.d) { if (!d->ref.ref()) { p.detach(d->alloc); if (true) { node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.end()), reinterpret_cast(l.p.begin())); } else { QListData::dispose(d); qt_noop(); } } } template QList::~QList() { if (!d->ref.deref()) dealloc(d); } template bool QList::operator==(const QList &l) const { if (p.size() != l.p.size()) return false; if (d == l.d) return true; Node *i = reinterpret_cast(p.end()); Node *b = reinterpret_cast(p.begin()); Node *li = reinterpret_cast(l.p.end()); while (i != b) { --i; --li; if (!(i->t() == li->t())) return false; } return true; } template void QList::dealloc(QListData::Data *data) { node_destruct(reinterpret_cast(data->array + data->begin), reinterpret_cast(data->array + data->end)); QListData::dispose(data); } template void QList::clear() { *this = QList(); } template int QList::removeAll(const T &_t) { int index = indexOf(_t); if (index == -1) return 0; const T t = _t; detach(); Node *i = reinterpret_cast(p.at(index)); Node *e = reinterpret_cast(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 bool QList::removeOne(const T &_t) { int index = indexOf(_t); if (index != -1) { removeAt(index); return true; } return false; } template typename QList::iterator QList::erase(typename QList::iterator afirst, typename QList::iterator alast) { ((!(isValidIterator(afirst))) ? qt_assert_x("QList::erase", "The specified iterator argument 'afirst' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",830) : qt_noop()); ((!(isValidIterator(alast))) ? qt_assert_x("QList::erase", "The specified iterator argument 'alast' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",831) : qt_noop()); if (d->ref.isShared()) { int offsetfirst = int(afirst.i - reinterpret_cast(p.begin())); int offsetlast = int(alast.i - reinterpret_cast(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 QList &QList::operator+=(const QList &l) { if (!l.isEmpty()) { if (isEmpty()) { *this = l; } else { Node *n = (d->ref.isShared()) ? detach_helper_grow(2147483647, l.size()) : reinterpret_cast(p.append(l.p)); if (true) { node_copy(n, reinterpret_cast(p.end()), reinterpret_cast(l.p.begin())); } else { d->end -= int(reinterpret_cast(p.end()) - n); qt_noop(); } } } return *this; } template inline void QList::append(const QList &t) { *this += t; } template int QList::indexOf(const T &t, int from) const { if (from < 0) from = qMax(from + p.size(), 0); if (from < p.size()) { Node *n = reinterpret_cast(p.at(from -1)); Node *e = reinterpret_cast(p.end()); while (++n != e) if (n->t() == t) return int(n - reinterpret_cast(p.begin())); } return -1; } template int QList::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(p.begin()); Node *n = reinterpret_cast(p.at(from + 1)); while (n-- != b) { if (n->t() == t) return n - b; } } return -1; } template bool QList::contains(const T &t) const { Node *b = reinterpret_cast(p.begin()); Node *i = reinterpret_cast(p.end()); while (i-- != b) if (i->t() == t) return true; return false; } template int QList::count(const T &t) const { int c = 0; Node *b = reinterpret_cast(p.begin()); Node *i = reinterpret_cast(p.end()); while (i-- != b) if (i->t() == t) ++c; return c; } template class QListIterator { typedef typename QList ::const_iterator const_iterator; QList c; const_iterator i; public: inline QListIterator(const QList &container) : c(container), i(c . constBegin()) {} inline QListIterator &operator=(const QList &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 QMutableListIterator { typedef typename QList ::iterator iterator; typedef typename QList ::const_iterator const_iterator; QList *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableListIterator(QList &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableListIterator() { c->setSharable(true); } inline QMutableListIterator &operator=(QList &container) { c->setSharable(true); c = &container; c->setSharable(false); 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() { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",936) : qt_noop()); return *n; } inline const T &value() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlist.h",936) : qt_noop()); 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; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvarlengtharray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcontainerfwd.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontainerfwd.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontainerfwd.h" 2 template class QCache; template class QHash; template class QLinkedList; template class QList; template class QMap; template class QMultiHash; template class QMultiMap; template struct QPair; template class QQueue; template class QSet; template class QStack; template class QVarLengthArray; template class QVector; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcontainerfwd.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h" 2 template class QPodList; template class QVarLengthArray { public: inline explicit QVarLengthArray(int size = 0); inline QVarLengthArray(const QVarLengthArray &other) : a(Prealloc), s(0), ptr(reinterpret_cast(array)) { append(other.constData(), other.size()); } inline ~QVarLengthArray() { if (QTypeInfo::isComplex) { T *i = ptr + s; while (i-- != ptr) i->~T(); } if (ptr != reinterpret_cast(array)) free(ptr); } inline QVarLengthArray &operator=(const QVarLengthArray &other) { if (this != &other) { clear(); append(other.constData(), other.size()); } return *this; } inline void removeLast() { ((!(s > 0)) ? qt_assert("s > 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",92) : qt_noop()); 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() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",98) : qt_noop()); return *begin(); } inline const T& first() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",99) : qt_noop()); return *begin(); } T& last() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",100) : qt_noop()); return *(end() - 1); } const T& last() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",101) : qt_noop()); 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 T &operator[](int idx) { ((!(idx >= 0 && idx < s)) ? qt_assert("idx >= 0 && idx < s","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",111) : qt_noop()); return ptr[idx]; } inline const T &operator[](int idx) const { ((!(idx >= 0 && idx < s)) ? qt_assert("idx >= 0 && idx < s","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",115) : qt_noop()); 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::isComplex) { new (ptr + idx) T(t); } else { ptr[idx] = t; } } void append(const T *buf, int size); inline QVarLengthArray &operator<<(const T &t) { append(t); return *this; } inline QVarLengthArray &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; 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; } 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; 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 inline QVarLengthArray::QVarLengthArray(int asize) : s(asize) { static_assert(bool(Prealloc > 0), "QVarLengthArray Prealloc must be greater than 0."); ((!(s >= 0)) ? qt_assert_x("QVarLengthArray::QVarLengthArray()", "Size must be greater than or equal to 0.","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",207) : qt_noop()); if (s > Prealloc) { ptr = reinterpret_cast(malloc(s * sizeof(T))); do {if(!(ptr))qt_check_pointer("/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",210);} while (0); a = s; } else { ptr = reinterpret_cast(array); a = Prealloc; } if (QTypeInfo::isComplex) { T *i = ptr + s; while (i != ptr) new (--i) T; } } template inline void QVarLengthArray::resize(int asize) { realloc(asize, qMax(asize, a)); } template inline void QVarLengthArray::reserve(int asize) { if (asize > a) realloc(s, asize); } template void QVarLengthArray::append(const T *abuf, int increment) { ((!(abuf)) ? qt_assert("abuf","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",234) : qt_noop()); if (increment <= 0) return; const int asize = s + increment; if (asize >= a) realloc(s, qMax(s*2, asize)); if (QTypeInfo::isComplex) { while (s < asize) new (ptr+(s++)) T(*abuf++); } else { memcpy(&ptr[s], abuf, increment * sizeof(T)); s = asize; } } template inline void QVarLengthArray::squeeze() { realloc(s, s); } template void QVarLengthArray::realloc(int asize, int aalloc) { ((!(aalloc >= asize)) ? qt_assert("aalloc >= asize","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",260) : qt_noop()); T *oldPtr = ptr; int osize = s; const int copySize = qMin(asize, osize); if (aalloc != a) { if (aalloc > Prealloc) { T* newPtr = reinterpret_cast(malloc(aalloc * sizeof(T))); do {if(!(newPtr))qt_check_pointer("/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",268);} while (0); ptr = newPtr; a = aalloc; } else { ptr = reinterpret_cast(array); a = Prealloc; } s = 0; if (QTypeInfo::isStatic) { if (true) { while (s < copySize) { new (ptr+s) T(*(oldPtr+s)); (oldPtr+s)->~T(); s++; } } else { int sClean = s; while (sClean < osize) (oldPtr+(sClean++))->~T(); if (oldPtr != reinterpret_cast(array) && oldPtr != ptr) free(oldPtr); qt_noop(); } } else { memcpy(ptr, oldPtr, copySize * sizeof(T)); } } s = copySize; if (QTypeInfo::isComplex) { while (osize > asize) (oldPtr+(--osize))->~T(); } if (oldPtr != reinterpret_cast(array) && oldPtr != ptr) free(oldPtr); if (QTypeInfo::isComplex) { while (s < asize) new (ptr+(s++)) T; } else { s = asize; } } template T QVarLengthArray::value(int i) const { if (uint(i) >= uint(size())) { return T(); } return at(i); } template T QVarLengthArray::value(int i, const T &defaultValue) const { return (uint(i) >= uint(size())) ? defaultValue : at(i); } template inline void QVarLengthArray::insert(int i, const T &t) { ((!(i >= 0 && i <= s)) ? qt_assert_x("QVarLengthArray::insert", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",334) : qt_noop()); insert(begin() + i, 1, t); } template inline void QVarLengthArray::insert(int i, int n, const T &t) { ((!(i >= 0 && i <= s)) ? qt_assert_x("QVarLengthArray::insert", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",338) : qt_noop()); insert(begin() + i, n, t); } template inline void QVarLengthArray::remove(int i, int n) { ((!(i >= 0 && n >= 0 && i + n <= s)) ? qt_assert_x("QVarLengthArray::remove", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",342) : qt_noop()); erase(begin() + i, begin() + i + n); } template inline void QVarLengthArray::remove(int i) { ((!(i >= 0 && i < s)) ? qt_assert_x("QVarLengthArray::remove", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",346) : qt_noop()); erase(begin() + i, begin() + i + 1); } template inline void QVarLengthArray::prepend(const T &t) { insert(begin(), 1, t); } template inline void QVarLengthArray::replace(int i, const T &t) { ((!(i >= 0 && i < s)) ? qt_assert_x("QVarLengthArray::replace", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",355) : qt_noop()); const T copy(t); data()[i] = copy; } template typename QVarLengthArray::iterator QVarLengthArray::insert(const_iterator before, size_type n, const T &t) { ((!(isValidIterator(before))) ? qt_assert_x("QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",364) : qt_noop()); int offset = int(before - ptr); if (n != 0) { resize(s + n); const T copy(t); if (QTypeInfo::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 typename QVarLengthArray::iterator QVarLengthArray::erase(const_iterator abegin, const_iterator aend) { ((!(isValidIterator(abegin))) ? qt_assert_x("QVarLengthArray::insert", "The specified const_iterator argument 'abegin' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",393) : qt_noop()); ((!(isValidIterator(aend))) ? qt_assert_x("QVarLengthArray::insert", "The specified const_iterator argument 'aend' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h",394) : qt_noop()); int f = int(abegin - ptr); int l = int(aend - ptr); int n = l - f; if (QTypeInfo::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 bool operator==(const QVarLengthArray &l, const QVarLengthArray &r) { if (l.size() != r.size()) return false; for (int i = 0; i < l.size(); i++) { if (l.at(i) != r.at(i)) return false; } return true; } template bool operator!=(const QVarLengthArray &l, const QVarLengthArray &r) { return !(l == r); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvarlengtharray.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qisenum.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qisenum.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qisenum.h" 2 # 58 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qisenum.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qisenum.h" 2 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypetraits.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypetraits.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 106 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qtypetraits.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtypetraits.h" 2 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnamespace.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs_impl.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h" 1 namespace QtPrivate { template struct RemoveRef { typedef T Type; }; template struct RemoveRef { typedef T Type; }; template struct RemoveConstRef { typedef T Type; }; template struct RemoveConstRef { typedef T Type; }; template struct List {}; template struct List { typedef Head Car; typedef List Cdr; }; template struct List_Append; template struct List_Append, List> { typedef List Value; }; template struct List_Left { typedef typename List_Append,typename List_Left::Value>::Value Value; }; template struct List_Left { typedef List<> Value; }; template struct List_Select { typedef typename List_Select::Value Value; }; template struct List_Select { typedef typename L::Car Value; }; template struct ApplyReturnValue { void *data; explicit ApplyReturnValue(void *data_) : data(data_) {} }; template void operator,(const T &value, const ApplyReturnValue &container) { if (container.data) *reinterpret_cast(container.data) = value; } template void operator,(T &&value, const ApplyReturnValue &container) { if (container.data) *reinterpret_cast(container.data) = value; } template void operator,(T, const ApplyReturnValue &) {} # 489 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h" template struct IndexesList {}; template struct IndexesAppend; template struct IndexesAppend, Right> { typedef IndexesList Value; }; template struct Indexes { typedef typename IndexesAppend::Value, N - 1>::Value Value; }; template <> struct Indexes<0> { typedef IndexesList<> Value; }; template struct FunctionPointer { enum {ArgumentCount = -1, IsPointerToMemberFunction = false}; }; template struct FunctorCall; template struct FunctorCall, List, R, Function> { static void call(Function f, void **arg) { f((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); } }; template struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...)> { static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) { (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); } }; template struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...) const> { static void call(SlotRet (Obj::*f)(SlotArgs...) const, Obj *o, void **arg) { (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); } }; template struct FunctionPointer { typedef Obj Object; typedef List Arguments; typedef Ret ReturnType; typedef Ret (Obj::*Function) (Args...); enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; template static void call(Function f, Obj *o, void **arg) { FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); } }; template struct FunctionPointer { typedef Obj Object; typedef List Arguments; typedef Ret ReturnType; typedef Ret (Obj::*Function) (Args...) const; enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; template static void call(Function f, Obj *o, void **arg) { FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); } }; template struct FunctionPointer { typedef List Arguments; typedef Ret ReturnType; typedef Ret (*Function) (Args...); enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = false}; template static void call(Function f, void *, void **arg) { FunctorCall::Value, SignalArgs, R, Function>::call(f, arg); } }; template struct Functor { template static void call(Function &f, void *, void **arg) { FunctorCall::Value, SignalArgs, R, Function>::call(f, arg); } }; template struct AreArgumentsCompatible { static int test(A2); static char test(...); static A1 dummy(); enum { value = sizeof(test(dummy())) == sizeof(int) }; }; template struct AreArgumentsCompatible { enum { value = false }; }; template struct AreArgumentsCompatible { enum { value = true }; }; template struct AreArgumentsCompatible { enum { value = true }; }; template struct AreArgumentsCompatible { enum { value = true }; }; template<> struct AreArgumentsCompatible { enum { value = true }; }; # 592 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h" template struct CheckCompatibleArguments { enum { value = false }; }; template <> struct CheckCompatibleArguments, List<>> { enum { value = true }; }; template struct CheckCompatibleArguments> { enum { value = true }; }; template struct CheckCompatibleArguments, List> { enum { value = AreArgumentsCompatible::Type, typename RemoveConstRef::Type>::value && CheckCompatibleArguments, List>::value }; }; template struct ComputeFunctorArgumentCount; template struct ComputeFunctorArgumentCountHelper { enum { Value = -1 }; }; template struct ComputeFunctorArgumentCountHelper, false> : ComputeFunctorArgumentCount, sizeof...(ArgList)>::Value> {}; template struct ComputeFunctorArgumentCount> { template static D dummy(); template static auto test(F f) -> decltype(((f.operator()((dummy())...)), int())); static char test(...); enum { Ok = sizeof(test(dummy())) == sizeof(int), Value = Ok ? sizeof...(ArgList) : int(ComputeFunctorArgumentCountHelper, Ok>::Value) }; }; template struct FunctorReturnType; template struct FunctorReturnType> { template static D dummy(); typedef decltype(dummy().operator()((dummy())...)) Value; }; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs_impl.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" 2 class QByteArray; struct QArrayData; typedef QArrayData QByteArrayData; class QString; # 96 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" # 108 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" template inline int qYouForgotTheQ_OBJECT_Macro(T, T) { return 0; } template inline void qYouForgotTheQ_OBJECT_Macro(T1, T2) {} # 157 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" # 193 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" # 206 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h" __attribute__((visibility("default"))) const char *qFlagLocation(const char *method); # 224 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 = 0, const void *aData = 0) : _data(aData), _name(aName) {} inline void *data() const { return const_cast(_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 = 0, void *aData = 0) : QGenericArgument(aName, aData) {} }; template class QArgument: public QGenericArgument { public: inline QArgument(const char *aName, const T &aData) : QGenericArgument(aName, static_cast(&aData)) {} }; template class QArgument: public QGenericArgument { public: inline QArgument(const char *aName, T &aData) : QGenericArgument(aName, static_cast(&aData)) {} }; template class QReturnArgument: public QGenericReturnArgument { public: inline QReturnArgument(const char *aName, T &aData) : QGenericReturnArgument(aName, static_cast(&aData)) {} }; struct __attribute__((visibility("default"))) QMetaObject { class Connection; const char *className() const; const QMetaObject *superClass() const; 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 = 0); 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(0), 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(0), 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(0), 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(0), 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(0), 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 **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; public: ~Connection(); Connection(); Connection(const Connection &other); Connection &operator=(const Connection &other); typedef void *Connection::*RestrictedBool; operator RestrictedBool() const { return d_ptr ? &Connection::d_ptr : 0; } inline Connection(Connection &&o) : d_ptr(o.d_ptr) { o.d_ptr = 0; } 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 struct HasQ_OBJECT_Macro { template 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) }; }; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 2 # 53 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 # 1 "/usr/include/c++/4.8/map" 1 3 # 59 "/usr/include/c++/4.8/map" 3 3 # 1 "/usr/include/c++/4.8/bits/stl_tree.h" 1 3 # 68 "/usr/include/c++/4.8/bits/stl_tree.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { 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) { while (__x->_M_left != 0) __x = __x->_M_left; return __x; } static _Const_Base_ptr _S_minimum(_Const_Base_ptr __x) { while (__x->_M_left != 0) __x = __x->_M_left; return __x; } static _Base_ptr _S_maximum(_Base_ptr __x) { while (__x->_M_right != 0) __x = __x->_M_right; return __x; } static _Const_Base_ptr _S_maximum(_Const_Base_ptr __x) { while (__x->_M_right != 0) __x = __x->_M_right; return __x; } }; template struct _Rb_tree_node : public _Rb_tree_node_base { typedef _Rb_tree_node<_Val>* _Link_type; _Val _M_value_field; template _Rb_tree_node(_Args&&... __args) : _Rb_tree_node_base(), _M_value_field(std::forward<_Args>(__args)...) { } }; __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 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() : _M_node() { } explicit _Rb_tree_iterator(_Link_type __x) : _M_node(__x) { } reference operator*() const { return static_cast<_Link_type>(_M_node)->_M_value_field; } pointer operator->() const { return std::__addressof(static_cast<_Link_type> (_M_node)->_M_value_field); } _Self& operator++() { _M_node = _Rb_tree_increment(_M_node); return *this; } _Self operator++(int) { _Self __tmp = *this; _M_node = _Rb_tree_increment(_M_node); return __tmp; } _Self& operator--() { _M_node = _Rb_tree_decrement(_M_node); return *this; } _Self operator--(int) { _Self __tmp = *this; _M_node = _Rb_tree_decrement(_M_node); return __tmp; } bool operator==(const _Self& __x) const { return _M_node == __x._M_node; } bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; } _Base_ptr _M_node; }; template 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() : _M_node() { } explicit _Rb_tree_const_iterator(_Link_type __x) : _M_node(__x) { } _Rb_tree_const_iterator(const iterator& __it) : _M_node(__it._M_node) { } iterator _M_const_cast() const { return iterator(static_cast (const_cast(_M_node))); } reference operator*() const { return static_cast<_Link_type>(_M_node)->_M_value_field; } pointer operator->() const { return std::__addressof(static_cast<_Link_type> (_M_node)->_M_value_field); } _Self& operator++() { _M_node = _Rb_tree_increment(_M_node); return *this; } _Self operator++(int) { _Self __tmp = *this; _M_node = _Rb_tree_increment(_M_node); return __tmp; } _Self& operator--() { _M_node = _Rb_tree_decrement(_M_node); return *this; } _Self operator--(int) { _Self __tmp = *this; _M_node = _Rb_tree_decrement(_M_node); return __tmp; } bool operator==(const _Self& __x) const { return _M_node == __x._M_node; } bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; } _Base_ptr _M_node; }; template inline bool operator==(const _Rb_tree_iterator<_Val>& __x, const _Rb_tree_const_iterator<_Val>& __y) { return __x._M_node == __y._M_node; } template inline bool operator!=(const _Rb_tree_iterator<_Val>& __x, const _Rb_tree_const_iterator<_Val>& __y) { 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 > class _Rb_tree { typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other _Node_allocator; protected: typedef _Rb_tree_node_base* _Base_ptr; typedef const _Rb_tree_node_base* _Const_Base_ptr; 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 _Rb_tree_node<_Val>* _Link_type; typedef const _Rb_tree_node<_Val>* _Const_Link_type; 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(&this->_M_impl); } allocator_type get_allocator() const noexcept { return allocator_type(_M_get_Node_allocator()); } protected: _Link_type _M_get_node() { return _M_impl._Node_allocator::allocate(1); } void _M_put_node(_Link_type __p) { _M_impl._Node_allocator::deallocate(__p, 1); } # 399 "/usr/include/c++/4.8/bits/stl_tree.h" 3 template _Link_type _M_create_node(_Args&&... __args) { _Link_type __tmp = _M_get_node(); if (true) { allocator_traits<_Node_allocator>:: construct(_M_get_Node_allocator(), __tmp, std::forward<_Args>(__args)...); } if (false) { _M_put_node(__tmp); ; } return __tmp; } void _M_destroy_node(_Link_type __p) { _M_get_Node_allocator().destroy(__p); _M_put_node(__p); } _Link_type _M_clone_node(_Const_Link_type __x) { _Link_type __tmp = _M_create_node(__x->_M_value_field); __tmp->_M_color = __x->_M_color; __tmp->_M_left = 0; __tmp->_M_right = 0; return __tmp; } protected: template 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(); } 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() { return this->_M_impl._M_header._M_parent; } _Const_Base_ptr _M_root() const { return this->_M_impl._M_header._M_parent; } _Base_ptr& _M_leftmost() { return this->_M_impl._M_header._M_left; } _Const_Base_ptr _M_leftmost() const { return this->_M_impl._M_header._M_left; } _Base_ptr& _M_rightmost() { return this->_M_impl._M_header._M_right; } _Const_Base_ptr _M_rightmost() const { return this->_M_impl._M_header._M_right; } _Link_type _M_begin() { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } _Const_Link_type _M_begin() const { return static_cast<_Const_Link_type> (this->_M_impl._M_header._M_parent); } _Link_type _M_end() { return static_cast<_Link_type>(&this->_M_impl._M_header); } _Const_Link_type _M_end() const { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); } static const_reference _S_value(_Const_Link_type __x) { return __x->_M_value_field; } static const _Key& _S_key(_Const_Link_type __x) { return _KeyOfValue()(_S_value(__x)); } static _Link_type _S_left(_Base_ptr __x) { return static_cast<_Link_type>(__x->_M_left); } static _Const_Link_type _S_left(_Const_Base_ptr __x) { return static_cast<_Const_Link_type>(__x->_M_left); } static _Link_type _S_right(_Base_ptr __x) { return static_cast<_Link_type>(__x->_M_right); } static _Const_Link_type _S_right(_Const_Base_ptr __x) { 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_value_field; } static const _Key& _S_key(_Const_Base_ptr __x) { return _KeyOfValue()(_S_value(__x)); } static _Base_ptr _S_minimum(_Base_ptr __x) { return _Rb_tree_node_base::_S_minimum(__x); } static _Const_Base_ptr _S_minimum(_Const_Base_ptr __x) { return _Rb_tree_node_base::_S_minimum(__x); } static _Base_ptr _S_maximum(_Base_ptr __x) { return _Rb_tree_node_base::_S_maximum(__x); } static _Const_Base_ptr _S_maximum(_Const_Base_ptr __x) { return _Rb_tree_node_base::_S_maximum(__x); } public: typedef _Rb_tree_iterator iterator; typedef _Rb_tree_const_iterator const_iterator; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_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 iterator _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v); iterator _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); template iterator _M_insert_lower(_Base_ptr __y, _Arg&& __v); template 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); # 623 "/usr/include/c++/4.8/bits/stl_tree.h" 3 _Link_type _M_copy(_Const_Link_type __x, _Link_type __p); 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, __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(_Rb_tree&& __x); ~_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(static_cast<_Link_type> (this->_M_impl._M_header._M_left)); } const_iterator begin() const noexcept { return const_iterator(static_cast<_Const_Link_type> (this->_M_impl._M_header._M_left)); } iterator end() noexcept { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); } const_iterator end() const noexcept { return const_iterator(static_cast<_Const_Link_type> (&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 _M_get_Node_allocator().max_size(); } void swap(_Rb_tree& __t); template pair _M_insert_unique(_Arg&& __x); template iterator _M_insert_equal(_Arg&& __x); template iterator _M_insert_unique_(const_iterator __position, _Arg&& __x); template iterator _M_insert_equal_(const_iterator __position, _Arg&& __x); template pair _M_emplace_unique(_Args&&... __args); template iterator _M_emplace_equal(_Args&&... __args); template iterator _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); template iterator _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); # 783 "/usr/include/c++/4.8/bits/stl_tree.h" 3 template void _M_insert_unique(_InputIterator __first, _InputIterator __last); template 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; } # 832 "/usr/include/c++/4.8/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(); } # 854 "/usr/include/c++/4.8/bits/stl_tree.h" 3 void erase(const key_type* __first, const key_type* __last); void clear() noexcept { _M_erase(_M_begin()); _M_leftmost() = _M_end(); _M_root() = 0; _M_rightmost() = _M_end(); _M_impl._M_node_count = 0; } 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 equal_range(const key_type& __k); pair equal_range(const key_type& __k) const; bool __rb_verify() const; }; template 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 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 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 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 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 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 inline void swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { __x.swap(__y); } template _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _Rb_tree(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&& __x) : _M_impl(__x._M_impl._M_key_compare, std::move(__x._M_get_Node_allocator())) { if (__x._M_root() != 0) { _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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x) { if (this != &__x) { clear(); _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()); _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 template 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) { bool __insert_left = (__x != 0 || __p == _M_end() || _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__p))); _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 template 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 template 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 _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) { _Link_type __top = _M_clone_node(__x); __top->_M_parent = __p; if (true) { if (__x->_M_right) __top->_M_right = _M_copy(_S_right(__x), __top); __p = __top; __x = _S_left(__x); while (__x != 0) { _Link_type __y = _M_clone_node(__x); __p->_M_left = __y; __y->_M_parent = __p; if (__x->_M_right) __y->_M_right = _M_copy(_S_right(__x), __y); __p = __y; __x = _S_left(__x); } } if (false) { _M_erase(__top); ; } return __top; } template 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_destroy_node(__x); __x = __y; } } template 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 _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 _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 _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 pair::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(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } return pair(iterator(__y), iterator(__y)); } template pair::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(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } return pair(const_iterator(__y), const_iterator(__y)); } template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t) { 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(); __t._M_root() = 0; __t._M_leftmost() = __t._M_end(); __t._M_rightmost() = __t._M_end(); } } 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(); _M_root() = 0; _M_leftmost() = _M_end(); _M_rightmost() = _M_end(); } 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); std::__alloc_swap<_Node_allocator>:: _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator()); } template pair::_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 pair::_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 template pair::iterator, bool> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_unique(_Arg&& __v) { typedef pair _Res; pair<_Base_ptr, _Base_ptr> __res = _M_get_insert_unique_pos(_KeyOfValue()(__v)); if (__res.second) return _Res(_M_insert_(__res.first, __res.second, std::forward<_Arg>(__v)), true); return _Res(iterator(static_cast<_Link_type>(__res.first)), false); } template template 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)); return _M_insert_(__res.first, __res.second, std::forward<_Arg>(__v)); } template pair::_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 template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_unique_(const_iterator __position, _Arg&& __v) { 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)); return iterator(static_cast<_Link_type>(__res.first)); } template pair::_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 template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_equal_(const_iterator __position, _Arg&& __v) { 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)); return _M_insert_equal_lower(std::forward<_Arg>(__v)); } template 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 _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 _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 template pair::iterator, bool> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_emplace_unique(_Args&&... __args) { _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); if (true) { typedef pair _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_destroy_node(__z); return _Res(iterator(static_cast<_Link_type>(__res.first)), false); } if (false) { _M_destroy_node(__z); ; } } template template 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)...); if (true) { auto __res = _M_get_insert_equal_pos(_S_key(__z)); return _M_insert_node(__res.first, __res.second, __z); } if (false) { _M_destroy_node(__z); ; } } template template 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)...); if (true) { 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_destroy_node(__z); return iterator(static_cast<_Link_type>(__res.first)); } if (false) { _M_destroy_node(__z); ; } } template template 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)...); if (true) { 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); } if (false) { _M_destroy_node(__z); ; } } template template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: _M_insert_unique(_II __first, _II __last) { for (; __first != __last; ++__first) _M_insert_unique_(end(), *__first); } template template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: _M_insert_equal(_II __first, _II __last) { for (; __first != __last; ++__first) _M_insert_equal_(end(), *__first); } template 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_destroy_node(__y); --_M_impl._M_node_count; } template 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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key& __x) { pair __p = equal_range(__x); const size_type __old_size = size(); erase(__p.first, __p.second); return __old_size - size(); } template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key* __first, const _Key* __last) { while (__first != __last) erase(*__first++); } template 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 _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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: count(const _Key& __k) const { pair __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 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 "/usr/include/c++/4.8/map" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_map.h" 1 3 # 65 "/usr/include/c++/4.8/bits/stl_map.h" 3 namespace std __attribute__ ((__visibility__ ("default"))) { template , typename _Alloc = std::allocator > > class map { public: typedef _Key key_type; typedef _Tp mapped_type; typedef std::pair 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 { 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 _Alloc::template rebind::other _Pair_alloc_type; typedef _Rb_tree, key_compare, _Pair_alloc_type> _Rep_type; _Rep_type _M_t; public: typedef typename _Pair_alloc_type::pointer pointer; typedef typename _Pair_alloc_type::const_pointer const_pointer; typedef typename _Pair_alloc_type::reference reference; typedef typename _Pair_alloc_type::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() : _M_t() { } explicit map(const _Compare& __comp, const allocator_type& __a = allocator_type()) : _M_t(__comp, _Pair_alloc_type(__a)) { } map(const map& __x) : _M_t(__x._M_t) { } map(map&& __x) noexcept(is_nothrow_copy_constructible<_Compare>::value) : _M_t(std::move(__x._M_t)) { } map(initializer_list __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()); } template map(_InputIterator __first, _InputIterator __last) : _M_t() { _M_t._M_insert_unique(__first, __last); } template 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); } map& operator=(const map& __x) { _M_t = __x._M_t; return *this; } map& operator=(map&& __x) { this->clear(); this->swap(__x); return *this; } map& operator=(initializer_list __l) { this->clear(); this->insert(__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(); } 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(__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; } 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; } template std::pair emplace(_Args&&... __args) { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } template iterator emplace_hint(const_iterator __pos, _Args&&... __args) { return _M_t._M_emplace_hint_unique(__pos, std::forward<_Args>(__args)...); } std::pair insert(const value_type& __x) { return _M_t._M_insert_unique(__x); } template::value>::type> std::pair insert(_Pair&& __x) { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); } void insert(std::initializer_list __list) { insert(__list.begin(), __list.end()); } iterator insert(const_iterator __position, const value_type& __x) { return _M_t._M_insert_unique_(__position, __x); } template::value>::type> iterator insert(const_iterator __position, _Pair&& __x) { return _M_t._M_insert_unique_(__position, std::forward<_Pair>(__x)); } template void insert(_InputIterator __first, _InputIterator __last) { _M_t._M_insert_unique(__first, __last); } iterator erase(const_iterator __position) { return _M_t.erase(__position); } __attribute ((__abi_tag__ ("cxx11"))) iterator erase(iterator __position) { return _M_t.erase(__position); } # 713 "/usr/include/c++/4.8/bits/stl_map.h" 3 size_type erase(const key_type& __x) { return _M_t.erase(__x); } iterator erase(const_iterator __first, const_iterator __last) { return _M_t.erase(__first, __last); } # 765 "/usr/include/c++/4.8/bits/stl_map.h" 3 void swap(map& __x) { _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()); } iterator find(const key_type& __x) { return _M_t.find(__x); } const_iterator find(const key_type& __x) const { return _M_t.find(__x); } size_type count(const key_type& __x) const { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } iterator lower_bound(const key_type& __x) { return _M_t.lower_bound(__x); } const_iterator lower_bound(const key_type& __x) const { return _M_t.lower_bound(__x); } iterator upper_bound(const key_type& __x) { return _M_t.upper_bound(__x); } const_iterator upper_bound(const key_type& __x) const { return _M_t.upper_bound(__x); } std::pair equal_range(const key_type& __x) { return _M_t.equal_range(__x); } std::pair equal_range(const key_type& __x) const { return _M_t.equal_range(__x); } template friend bool operator==(const map<_K1, _T1, _C1, _A1>&, const map<_K1, _T1, _C1, _A1>&); template friend bool operator<(const map<_K1, _T1, _C1, _A1>&, const map<_K1, _T1, _C1, _A1>&); }; template inline bool operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return __x._M_t == __y._M_t; } template 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 inline bool operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__x == __y); } template inline bool operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return __y < __x; } template inline bool operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__y < __x); } template inline bool operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__x < __y); } template inline void swap(map<_Key, _Tp, _Compare, _Alloc>& __x, map<_Key, _Tp, _Compare, _Alloc>& __y) { __x.swap(__y); } } # 62 "/usr/include/c++/4.8/map" 2 3 # 1 "/usr/include/c++/4.8/bits/stl_multimap.h" 1 3 namespace std __attribute__ ((__visibility__ ("default"))) { template , typename _Alloc = std::allocator > > class multimap { public: typedef _Key key_type; typedef _Tp mapped_type; typedef std::pair 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 { 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 _Alloc::template rebind::other _Pair_alloc_type; typedef _Rb_tree, key_compare, _Pair_alloc_type> _Rep_type; _Rep_type _M_t; public: typedef typename _Pair_alloc_type::pointer pointer; typedef typename _Pair_alloc_type::const_pointer const_pointer; typedef typename _Pair_alloc_type::reference reference; typedef typename _Pair_alloc_type::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() : _M_t() { } explicit multimap(const _Compare& __comp, const allocator_type& __a = allocator_type()) : _M_t(__comp, _Pair_alloc_type(__a)) { } multimap(const multimap& __x) : _M_t(__x._M_t) { } multimap(multimap&& __x) noexcept(is_nothrow_copy_constructible<_Compare>::value) : _M_t(std::move(__x._M_t)) { } multimap(initializer_list __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()); } template multimap(_InputIterator __first, _InputIterator __last) : _M_t() { _M_t._M_insert_equal(__first, __last); } template 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); } multimap& operator=(const multimap& __x) { _M_t = __x._M_t; return *this; } multimap& operator=(multimap&& __x) { this->clear(); this->swap(__x); return *this; } multimap& operator=(initializer_list __l) { this->clear(); this->insert(__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(); } template iterator emplace(_Args&&... __args) { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } template iterator emplace_hint(const_iterator __pos, _Args&&... __args) { return _M_t._M_emplace_hint_equal(__pos, std::forward<_Args>(__args)...); } iterator insert(const value_type& __x) { return _M_t._M_insert_equal(__x); } template::value>::type> iterator insert(_Pair&& __x) { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); } iterator insert(const_iterator __position, const value_type& __x) { return _M_t._M_insert_equal_(__position, __x); } template::value>::type> iterator insert(const_iterator __position, _Pair&& __x) { return _M_t._M_insert_equal_(__position, std::forward<_Pair>(__x)); } template void insert(_InputIterator __first, _InputIterator __last) { _M_t._M_insert_equal(__first, __last); } void insert(initializer_list __l) { this->insert(__l.begin(), __l.end()); } iterator erase(const_iterator __position) { return _M_t.erase(__position); } __attribute ((__abi_tag__ ("cxx11"))) iterator erase(iterator __position) { return _M_t.erase(__position); } # 618 "/usr/include/c++/4.8/bits/stl_multimap.h" 3 size_type erase(const key_type& __x) { return _M_t.erase(__x); } iterator erase(const_iterator __first, const_iterator __last) { return _M_t.erase(__first, __last); } # 674 "/usr/include/c++/4.8/bits/stl_multimap.h" 3 void swap(multimap& __x) { _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()); } iterator find(const key_type& __x) { return _M_t.find(__x); } const_iterator find(const key_type& __x) const { return _M_t.find(__x); } size_type count(const key_type& __x) const { return _M_t.count(__x); } iterator lower_bound(const key_type& __x) { return _M_t.lower_bound(__x); } const_iterator lower_bound(const key_type& __x) const { return _M_t.lower_bound(__x); } iterator upper_bound(const key_type& __x) { return _M_t.upper_bound(__x); } const_iterator upper_bound(const key_type& __x) const { return _M_t.upper_bound(__x); } std::pair equal_range(const key_type& __x) { return _M_t.equal_range(__x); } std::pair equal_range(const key_type& __x) const { return _M_t.equal_range(__x); } template friend bool operator==(const multimap<_K1, _T1, _C1, _A1>&, const multimap<_K1, _T1, _C1, _A1>&); template friend bool operator<(const multimap<_K1, _T1, _C1, _A1>&, const multimap<_K1, _T1, _C1, _A1>&); }; template inline bool operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, const multimap<_Key, _Tp, _Compare, _Alloc>& __y) { return __x._M_t == __y._M_t; } template 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 inline bool operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, const multimap<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__x == __y); } template inline bool operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, const multimap<_Key, _Tp, _Compare, _Alloc>& __y) { return __y < __x; } template inline bool operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, const multimap<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__y < __x); } template inline bool operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, const multimap<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__x < __y); } template inline void swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, multimap<_Key, _Tp, _Compare, _Alloc>& __y) { __x.swap(__y); } } # 63 "/usr/include/c++/4.8/map" 2 3 # 59 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" 2 template struct QMetaTypeId2; template inline constexpr int qMetaTypeId(); # 125 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 156 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 195 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 203 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" class QDataStream; class QMetaTypeInterface; struct QMetaObject; namespace QtPrivate { template 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 = 0, Destroy d = 0) : stream(s), destroy(d) {} AbstractDebugStreamFunction(const AbstractDebugStreamFunction &) = delete; AbstractDebugStreamFunction &operator=(const AbstractDebugStreamFunction &) = delete; Stream stream; Destroy destroy; }; template struct BuiltInDebugStreamFunction : public AbstractDebugStreamFunction { BuiltInDebugStreamFunction() : AbstractDebugStreamFunction(stream, destroy) {} static void stream(const AbstractDebugStreamFunction *, QDebug& dbg, const void *r) { const T *rhs = static_cast(r); operator<<(dbg, *rhs); } static void destroy(AbstractDebugStreamFunction *_this) { delete static_cast(_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 = 0, Equals e = 0, Destroy d = 0) : lessThan(lt), equals(e), destroy(d) {} AbstractComparatorFunction(const AbstractComparatorFunction &) = delete; AbstractComparatorFunction &operator=(const AbstractComparatorFunction &) = delete; LessThan lessThan; Equals equals; Destroy destroy; }; template 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(l); const T *rhs = static_cast(r); return *lhs < *rhs; } static bool equals(const AbstractComparatorFunction *, const void *l, const void *r) { const T *lhs = static_cast(l); const T *rhs = static_cast(r); return *lhs == *rhs; } static void destroy(AbstractComparatorFunction *_this) { delete static_cast(_this); } }; struct AbstractConverterFunction { typedef bool (*Converter)(const AbstractConverterFunction *, const void *, void*); explicit AbstractConverterFunction(Converter c = 0) : convert(c) {} AbstractConverterFunction(const AbstractConverterFunction &) = delete; AbstractConverterFunction &operator=(const AbstractConverterFunction &) = delete; Converter convert; }; template 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(in); To *t = static_cast(out); const ConverterMemberFunction *_typedThis = static_cast(_this); *t = (f->*_typedThis->m_function)(); return true; } To(From::* const m_function)() const; }; template 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(in); To *t = static_cast(out); bool ok = false; const ConverterMemberFunctionOk *_typedThis = static_cast(_this); *t = (f->*_typedThis->m_function)(&ok); if (!ok) *t = To(); return ok; } To(From::* const m_function)(bool*) const; }; template 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(in); To *t = static_cast(out); const ConverterFunctor *_typedThis = static_cast(_this); *t = _typedThis->m_function(*f); return true; } UnaryFunction m_function; }; template struct ValueTypeIsMetaType; template struct AssociativeValueTypeIsMetaType; template struct IsMetaTypePair; template 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, QObjectStar = 39, QVariantMap = 8, QVariantList = 9, QVariantHash = 28, 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 = QJsonDocument, FirstGuiType = QFont, LastGuiType = QPolygonF, FirstWidgetsType = QSizePolicy, LastWidgetsType = QSizePolicy, HighestInternalId = LastWidgetsType, QReal = sizeof(qreal) == sizeof(double) ? Double : Float, UnknownType = 0, User = 1024 }; # 434 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 }; typedef QFlags 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 int registerNormalizedType(const ::QByteArray &normalizedTypeName, Deleter deleter, Creator creator, 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 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 = 0); 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 = 0) const; inline void destroy(void *data) const; inline void *construct(void *where, const void *copy = 0) const; inline void destruct(void *data) const; public: template static bool registerComparators() { static_assert(bool((!QMetaTypeId2 ::IsBuiltIn)), "QMetaType::registerComparators: The type must be a custom type."); const int typeId = qMetaTypeId(); static const QtPrivate::BuiltInComparatorFunction f; return registerComparatorFunction( &f, typeId); } template static bool hasRegisteredComparators() { return hasRegisteredComparators(qMetaTypeId()); } static bool hasRegisteredComparators(int typeId); template static bool registerDebugStreamOperator() { static_assert(bool((!QMetaTypeId2 ::IsBuiltIn)), "QMetaType::registerDebugStreamOperator: The type must be a custom type."); const int typeId = qMetaTypeId(); static const QtPrivate::BuiltInDebugStreamFunction f; return registerDebugStreamOperatorFunction(&f, typeId); } template static bool hasRegisteredDebugStreamOperator() { return hasRegisteredDebugStreamOperator(qMetaTypeId()); } static bool hasRegisteredDebugStreamOperator(int typeId); template static bool registerConverter() { return registerConverter(QtPrivate::convertImplicit); } template static bool registerConverter(To(From::*function)() const) { static_assert(bool((!QMetaTypeId2 ::IsBuiltIn || !QMetaTypeId2 ::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type."); const int fromTypeId = qMetaTypeId(); const int toTypeId = qMetaTypeId(); static const QtPrivate::ConverterMemberFunction f(function); return registerConverterFunction(&f, fromTypeId, toTypeId); } template static bool registerConverter(To(From::*function)(bool*) const) { static_assert(bool((!QMetaTypeId2 ::IsBuiltIn || !QMetaTypeId2 ::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type."); const int fromTypeId = qMetaTypeId(); const int toTypeId = qMetaTypeId(); static const QtPrivate::ConverterMemberFunctionOk f(function); return registerConverterFunction(&f, fromTypeId, toTypeId); } template static bool registerConverter(UnaryFunction function) { static_assert(bool((!QMetaTypeId2 ::IsBuiltIn || !QMetaTypeId2 ::IsBuiltIn)), "QMetaType::registerConverter: At least one of the types must be a custom type."); const int fromTypeId = qMetaTypeId(); const int toTypeId = qMetaTypeId(); static const QtPrivate::ConverterFunctor 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 debugStream(QDebug& dbg, const void *rhs, int typeId); template static bool hasRegisteredConverterFunction() { return hasRegisteredConverterFunction(qMetaTypeId(), qMetaTypeId()); } 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 = 0) const; void destroyExtended(void *data) const; void *constructExtended(void *where, const void *copy = 0) 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 friend bool qRegisterSequentialConverter(); template friend struct QtPrivate::ValueTypeIsMetaType; template friend struct QtPrivate::ConverterMemberFunction; template friend struct QtPrivate::ConverterMemberFunctionOk; template friend struct QtPrivate::ConverterFunctor; template friend bool qRegisterAssociativeConverter(); template friend struct QtPrivate::AssociativeValueTypeIsMetaType; template friend struct QtPrivate::IsMetaTypePair; template 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; Deleter m_deleter; 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 operator|(QMetaType::TypeFlags::enum_type f1, QMetaType::TypeFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QMetaType::TypeFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QMetaType::TypeFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } namespace QtPrivate { template ConverterMemberFunction::~ConverterMemberFunction() { QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); } template ConverterMemberFunctionOk::~ConverterMemberFunctionOk() { QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); } template ConverterFunctor::~ConverterFunctor() { QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); } } namespace QtMetaTypePrivate { template struct QMetaTypeFunctionHelper { static void Delete(void *t) { delete static_cast(t); } static void *Create(const void *t) { if (t) return new T(*static_cast(t)); return new T(); } static void Destruct(void *t) { (void)t; static_cast(t)->~T(); } static void *Construct(void *where, const void *t) { if (t) return new (where) T(*static_cast(t)); return new (where) T; } static void Save(QDataStream &stream, const void *t) { stream << *static_cast(t); } static void Load(QDataStream &stream, void *t) { stream >> *static_cast(t); } }; template struct QMetaTypeFunctionHelper { static void Delete(void *) {} static void *Create(const void *) { return 0; } static void Destruct(void *) {} static void *Construct(void *, const void *) { return 0; } static void Save(QDataStream &, const void *) {} static void Load(QDataStream &, void *) {} }; template <> struct QMetaTypeFunctionHelper : public QMetaTypeFunctionHelper {}; struct VariantData { VariantData(const int metaTypeId_, const void *data_, const uint flags_) : metaTypeId(metaTypeId_) , data(data_) , flags(flags_) { } const int metaTypeId; const void *data; const uint flags; }; template struct IteratorOwner { static void assign(void **ptr, const_iterator iterator) { *ptr = new const_iterator(iterator); } static void advance(void **iterator, int step) { const_iterator &it = *static_cast(*iterator); std::advance(it, step); } static void destroy(void **ptr) { delete static_cast(*ptr); } static const void *getData(void * const *iterator) { return &**static_cast(*iterator); } static const void *getData(const_iterator it) { return &*it; } }; template struct IteratorOwner { static void assign(void **ptr, const const_iterator *iterator ) { *ptr = const_cast(iterator); } static void advance(void **iterator, int step) { const_iterator *it = static_cast(*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 const_iterator *it) { return it; } }; enum IteratorCapability { ForwardCapability = 1, BiDirectionalCapability = 2, RandomAccessCapability = 4 }; template::iterator_category> struct CapabilitiesImpl; template struct CapabilitiesImpl { enum { IteratorCapabilities = ForwardCapability }; }; template struct CapabilitiesImpl { enum { IteratorCapabilities = BiDirectionalCapability | ForwardCapability }; }; template struct CapabilitiesImpl { enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; }; template struct ContainerAPI : CapabilitiesImpl { static int size(const T *t) { return std::distance(t->begin(), t->end()); } }; template struct ContainerAPI > : CapabilitiesImpl > { static int size(const QList *t) { return t->size(); } }; template struct ContainerAPI > : CapabilitiesImpl > { static int size(const QVector *t) { return t->size(); } }; template struct ContainerAPI > : CapabilitiesImpl > { static int size(const std::vector *t) { return t->size(); } }; template struct ContainerAPI > : CapabilitiesImpl > { static int size(const std::list *t) { return 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 static int sizeImpl(const void *p) { return ContainerAPI::size(static_cast(p)); } template static const void* atImpl(const void *p, int idx) { typename T::const_iterator i = static_cast(p)->begin(); std::advance(i, idx); return IteratorOwner::getData(i); } template static void advanceImpl(void **p, int step) { IteratorOwner::advance(p, step); } template static void moveToBeginImpl(const void *container, void **iterator) { IteratorOwner::assign(iterator, static_cast(container)->begin()); } template static void moveToEndImpl(const void *container, void **iterator) { IteratorOwner::assign(iterator, static_cast(container)->end()); } template static void destroyIterImpl(void **iterator) { IteratorOwner::destroy(iterator); } template static bool equalIterImpl(void * const *iterator, void * const *other) { return *static_cast(*iterator) == *static_cast(*other); } template static VariantData getImpl(void * const *iterator, int metaTypeId, uint flags) { return VariantData(metaTypeId, IteratorOwner::getData(iterator), flags); } template static void copyIterImpl(void **dest, void * const * src) { IteratorOwner::assign(dest, *static_cast(*src)); } public: template QSequentialIterableImpl(const T*p) : _iterable(p) , _iterator(0) , _metaType_id(qMetaTypeId()) , _metaType_flags(QTypeInfo::isPointer) , _iteratorCapabilities(ContainerAPI::IteratorCapabilities) , _size(sizeImpl) , _at(atImpl) , _moveToBegin(moveToBeginImpl) , _moveToEnd(moveToEndImpl) , _advance(advanceImpl) , _get(getImpl) , _destroyIter(destroyIterImpl) , _equalIter(equalIterImpl) , _copyIter(copyIterImpl) { } QSequentialIterableImpl() : _iterable(0) , _iterator(0) , _metaType_id(QMetaType::UnknownType) , _metaType_flags(0) , _iteratorCapabilities(0) , _size(0) , _at(0) , _moveToBegin(0) , _moveToEnd(0) , _advance(0) , _get(0) , _destroyIter(0) , _equalIter(0) , _copyIter(0) { } 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) { ((!(i > 0 || _iteratorCapabilities & BiDirectionalCapability)) ? qt_assert("i > 0 || _iteratorCapabilities & BiDirectionalCapability","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",988) : qt_noop()); _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 { ((!(_iterable)) ? qt_assert("_iterable","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",998) : qt_noop()); return _size(_iterable); } inline void destroyIter() { _destroyIter(&_iterator); } void copy(const QSequentialIterableImpl &other) { *this = other; _copyIter(&_iterator, &other._iterator); } }; template struct QSequentialIterableConvertFunctor { QSequentialIterableImpl operator()(const From &f) const { return QSequentialIterableImpl(&f); } }; } namespace QtMetaTypePrivate { template::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 >::value> struct StlStyleAssociativeContainerAccessor; template struct StlStyleAssociativeContainerAccessor { 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 struct AssociativeContainerAccessor : public StlStyleAssociativeContainerAccessor { }; 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 static int sizeImpl(const void *p) { return std::distance(static_cast(p)->begin(), static_cast(p)->end()); } template static void findImpl(const void *container, const void *p, void **iterator) { IteratorOwner::assign(iterator, static_cast(container)->find(*static_cast(p))); } template static void advanceImpl(void **p, int step) { std::advance(*static_cast(*p), step); } template static void beginImpl(const void *container, void **iterator) { IteratorOwner::assign(iterator, static_cast(container)->begin()); } template static void endImpl(const void *container, void **iterator) { IteratorOwner::assign(iterator, static_cast(container)->end()); } template static VariantData getKeyImpl(void * const *iterator, int metaTypeId, uint flags) { return VariantData(metaTypeId, &AssociativeContainerAccessor::getKey(*static_cast(*iterator)), flags); } template static VariantData getValueImpl(void * const *iterator, int metaTypeId, uint flags) { return VariantData(metaTypeId, &AssociativeContainerAccessor::getValue(*static_cast(*iterator)), flags); } template static void destroyIterImpl(void **iterator) { IteratorOwner::destroy(iterator); } template static bool equalIterImpl(void * const *iterator, void * const *other) { return *static_cast(*iterator) == *static_cast(*other); } template static void copyIterImpl(void **dest, void * const * src) { IteratorOwner::assign(dest, *static_cast(*src)); } public: template QAssociativeIterableImpl(const T*p) : _iterable(p) , _metaType_id_key(qMetaTypeId()) , _metaType_flags_key(QTypeInfo::isPointer) , _metaType_id_value(qMetaTypeId()) , _metaType_flags_value(QTypeInfo::isPointer) , _size(sizeImpl) , _find(findImpl) , _begin(beginImpl) , _end(endImpl) , _advance(advanceImpl) , _getKey(getKeyImpl) , _getValue(getValueImpl) , _destroyIter(destroyIterImpl) , _equalIter(equalIterImpl) , _copyIter(copyIterImpl) { } QAssociativeIterableImpl() : _iterable(0) , _metaType_id_key(QMetaType::UnknownType) , _metaType_flags_key(0) , _metaType_id_value(QMetaType::UnknownType) , _metaType_flags_value(0) , _size(0) , _find(0) , _begin(0) , _end(0) , _advance(0) , _getKey(0) , _getValue(0) , _destroyIter(0) , _equalIter(0) , _copyIter(0) { } 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_value); } 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 { ((!(_iterable)) ? qt_assert("_iterable","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1179) : qt_noop()); return _size(_iterable); } void copy(const QAssociativeIterableImpl &other) { *this = other; _copyIter(&_iterator, &other._iterator); } }; template 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 static VariantData getFirstImpl(const void * const *pair, int metaTypeId, uint flags) { return VariantData(metaTypeId, &static_cast(*pair)->first, flags); } template static VariantData getSecondImpl(const void * const *pair, int metaTypeId, uint flags) { return VariantData(metaTypeId, &static_cast(*pair)->second, flags); } public: template QPairVariantInterfaceImpl(const T*p) : _pair(p) , _metaType_id_first(qMetaTypeId()) , _metaType_flags_first(QTypeInfo::isPointer) , _metaType_id_second(qMetaTypeId()) , _metaType_flags_second(QTypeInfo::isPointer) , _getFirst(getFirstImpl) , _getSecond(getSecondImpl) { } QPairVariantInterfaceImpl() : _pair(0) , _getFirst(0) , _getSecond(0) { } 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 struct QPairVariantInterfaceConvertFunctor; template struct QPairVariantInterfaceConvertFunctor > { QPairVariantInterfaceImpl operator()(const QPair& f) const { return QPairVariantInterfaceImpl(&f); } }; template struct QPairVariantInterfaceConvertFunctor > { QPairVariantInterfaceImpl operator()(const std::pair& f) const { return QPairVariantInterfaceImpl(&f); } }; } class QObject; class QWidget; template class QSharedPointer; template class QWeakPointer; template class QPointer; namespace QtPrivate { template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template<> struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template<> struct IsPointerToTypeDerivedFromQObject { enum { Value = true }; }; template struct IsPointerToTypeDerivedFromQObject { 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(0))) == sizeof(yes_type) }; }; template::Value> struct MetaObjectForType { static inline const QMetaObject *value() { return 0; } }; template struct MetaObjectForType { static inline const QMetaObject *value() { return &T::staticMetaObject; } }; template struct IsSharedPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsSharedPointerToTypeDerivedFromQObject > : IsPointerToTypeDerivedFromQObject { }; template struct IsWeakPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsWeakPointerToTypeDerivedFromQObject > : IsPointerToTypeDerivedFromQObject { }; template struct IsTrackingPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsTrackingPointerToTypeDerivedFromQObject > { enum { Value = true }; }; template struct IsSequentialContainer { enum { Value = false }; }; template struct IsAssociativeContainer { enum { Value = false }; }; template::Value> struct SequentialContainerConverterHelper { static bool registerConverter(int) { return false; } }; template::Defined> struct ValueTypeIsMetaType { static bool registerConverter(int) { return false; } }; template struct SequentialContainerConverterHelper : ValueTypeIsMetaType { }; template::Value> struct AssociativeContainerConverterHelper { static bool registerConverter(int) { return false; } }; template::Defined> struct AssociativeValueTypeIsMetaType { static bool registerConverter(int) { return false; } }; template::Defined> struct KeyAndValueTypeIsMetaType { static bool registerConverter(int) { return false; } }; template struct KeyAndValueTypeIsMetaType : AssociativeValueTypeIsMetaType { }; template struct AssociativeContainerConverterHelper : KeyAndValueTypeIsMetaType { }; template::Defined && QMetaTypeId2::Defined> struct IsMetaTypePair { static bool registerConverter(int) { return false; } }; template struct IsMetaTypePair { inline static bool registerConverter(int id); }; template struct IsPair { static bool registerConverter(int) { return false; } }; template struct IsPair > : IsMetaTypePair > {}; template struct IsPair > : IsMetaTypePair > {}; template struct MetaTypePairHelper : IsPair {}; template struct MetaTypeSmartPointerHelper { static bool registerConverter(int) { return false; } }; __attribute__((visibility("default"))) bool isBuiltinType(const QByteArray &type); } template ::Value> struct QMetaTypeIdQObject { enum { Defined = 0 }; }; template struct QMetaTypeId : public QMetaTypeIdQObject { }; template struct QMetaTypeId2 { enum { Defined = QMetaTypeId::Defined, IsBuiltIn=false }; static inline constexpr int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; template struct QMetaTypeId2 : QMetaTypeId2 {}; namespace QtPrivate { template ::Defined> struct QMetaTypeIdHelper { static inline constexpr int qt_metatype_id() { return QMetaTypeId2::qt_metatype_id(); } }; template struct QMetaTypeIdHelper { static inline constexpr int qt_metatype_id() { return -1; } }; # 1505 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct QMetaTypeTypeFlags { enum { Flags = (!QTypeInfo::isStatic ? QMetaType::MovableType : 0) | (QTypeInfo::isComplex ? QMetaType::NeedsConstruction : 0) | (QTypeInfo::isComplex ? QMetaType::NeedsDestruction : 0) | (IsPointerToTypeDerivedFromQObject::Value ? QMetaType::PointerToQObject : 0) | (IsSharedPointerToTypeDerivedFromQObject::Value ? QMetaType::SharedPointerToQObject : 0) | (IsWeakPointerToTypeDerivedFromQObject::Value ? QMetaType::WeakPointerToQObject : 0) | (IsTrackingPointerToTypeDerivedFromQObject::Value ? QMetaType::TrackingPointerToQObject : 0) | (__is_enum(T) ? QMetaType::IsEnumeration : 0) }; }; template struct MetaTypeDefinedHelper { enum DefinedType { Defined = defined }; }; template struct QSmartPointerConvertFunctor { QObject* operator()(const SmartPointer &p) const { return p.operator->(); } }; template struct QSmartPointerConvertFunctor > { QObject* operator()(const QWeakPointer &p) const { return p.data(); } }; } template int qRegisterNormalizedMetaType(const ::QByteArray &normalizedTypeName , T * dummy = 0 , typename QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::Defined ) { ((!(normalizedTypeName == QMetaObject::normalizedType(normalizedTypeName . constData()))) ? qt_assert_x("qRegisterNormalizedMetaType", "qRegisterNormalizedMetaType was called with a not normalized type name, please call qRegisterMetaType instead.","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1557) : qt_noop()); const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper::qt_metatype_id(); if (typedefOf != -1) return QMetaType::registerNormalizedTypedef(normalizedTypeName, typedefOf); QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags::Flags); if (defined) flags |= QMetaType::WasDeclaredAsMetaType; const int id = QMetaType::registerNormalizedType(normalizedTypeName, QtMetaTypePrivate::QMetaTypeFunctionHelper::Delete, QtMetaTypePrivate::QMetaTypeFunctionHelper::Create, QtMetaTypePrivate::QMetaTypeFunctionHelper::Destruct, QtMetaTypePrivate::QMetaTypeFunctionHelper::Construct, int(sizeof(T)), flags, QtPrivate::MetaObjectForType::value()); if (id > 0) { QtPrivate::SequentialContainerConverterHelper::registerConverter(id); QtPrivate::AssociativeContainerConverterHelper::registerConverter(id); QtPrivate::MetaTypePairHelper::registerConverter(id); QtPrivate::MetaTypeSmartPointerHelper::registerConverter(id); } return id; } template int qRegisterMetaType(const char *typeName , T * dummy = 0 , typename QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::Defined ) { ::QByteArray normalizedTypeName = QMetaObject::normalizedType(typeName); return qRegisterNormalizedMetaType(normalizedTypeName, dummy, defined); } template void qRegisterMetaTypeStreamOperators(const char *typeName , T * = 0 ) { qRegisterMetaType(typeName); QMetaType::registerStreamOperators(typeName, QtMetaTypePrivate::QMetaTypeFunctionHelper::Save, QtMetaTypePrivate::QMetaTypeFunctionHelper::Load); } template inline constexpr int qMetaTypeId() { static_assert(bool(QMetaTypeId2 ::Defined), "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system"); return QMetaTypeId2::qt_metatype_id(); } template inline constexpr int qRegisterMetaType() { return qMetaTypeId(); } template __attribute__ ((__deprecated__)) inline constexpr int qMetaTypeId(T *) { return qMetaTypeId(); } template __attribute__ ((__deprecated__)) inline constexpr int qRegisterMetaType(T *) { return qRegisterMetaType(); } template struct QMetaTypeIdQObject { 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( typeName, reinterpret_cast(quintptr(-1))); metatype_id.storeRelease(newId); return newId; } }; template inline int qRegisterMetaTypeStreamOperators() { int id = qMetaTypeId(); QMetaType::registerStreamOperators(id, QtMetaTypePrivate::QMetaTypeFunctionHelper::Save, QtMetaTypePrivate::QMetaTypeFunctionHelper::Load); return id; } # 1686 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 1705 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 1715 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 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 QVariantList; typedef QMap QVariantMap; typedef QHash QVariantHash; # 1767 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" # 1802 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" namespace QtPrivate { template struct SharedPointerMetaTypeIdHelper { enum { Defined = 0 }; static int qt_metatype_id() { return -1; } }; } # 1870 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" template class QList; template struct QMetaTypeId< QList > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QList * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QVector; template struct QMetaTypeId< QVector > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QVector * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QQueue; template struct QMetaTypeId< QQueue > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QQueue * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QStack; template struct QMetaTypeId< QStack > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QStack * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QSet; template struct QMetaTypeId< QSet > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QSet * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QLinkedList; template struct QMetaTypeId< QLinkedList > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1879) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< QLinkedList * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template struct QMetaTypeId< std::vector > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1885) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< std::vector * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template struct QMetaTypeId< std::list > { enum { Defined = QMetaTypeId2 ::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()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1886) : qt_noop()); const int tNameLen = 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 >( typeName, reinterpret_cast< std::list * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsSequentialContainer > { enum { Value = true }; }; } template class QHash; template class QMap; template struct QPair; # 1908 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h" namespace QtPrivate { template struct IsAssociativeContainer > { enum { Value = true }; }; } template struct QMetaTypeId< QHash > { enum { Defined = QMetaTypeId2 ::Defined && QMetaTypeId2 ::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()); const char *uName = QMetaType::typeName(qMetaTypeId()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1909) : qt_noop()); ((!(uName)) ? qt_assert("uName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1909) : qt_noop()); const int tNameLen = qstrlen(tName); const int uNameLen = 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 >( typeName, reinterpret_cast< QHash * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsAssociativeContainer > { enum { Value = true }; }; } template struct QMetaTypeId< QMap > { enum { Defined = QMetaTypeId2 ::Defined && QMetaTypeId2 ::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()); const char *uName = QMetaType::typeName(qMetaTypeId()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1910) : qt_noop()); ((!(uName)) ? qt_assert("uName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1910) : qt_noop()); const int tNameLen = qstrlen(tName); const int uNameLen = 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 >( typeName, reinterpret_cast< QMap * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct IsAssociativeContainer > { enum { Value = true }; }; } template struct QMetaTypeId< std::map > { enum { Defined = QMetaTypeId2 ::Defined && QMetaTypeId2 ::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()); const char *uName = QMetaType::typeName(qMetaTypeId()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1911) : qt_noop()); ((!(uName)) ? qt_assert("uName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1911) : qt_noop()); const int tNameLen = qstrlen(tName); const int uNameLen = 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 >( typeName, reinterpret_cast< std::map * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template struct QMetaTypeId< QPair > { enum { Defined = QMetaTypeId2 ::Defined && QMetaTypeId2 ::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()); const char *uName = QMetaType::typeName(qMetaTypeId()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1913) : qt_noop()); ((!(uName)) ? qt_assert("uName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1913) : qt_noop()); const int tNameLen = qstrlen(tName); const int uNameLen = 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 >( typeName, reinterpret_cast< QPair * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template struct QMetaTypeId< std::pair > { enum { Defined = QMetaTypeId2 ::Defined && QMetaTypeId2 ::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()); const char *uName = QMetaType::typeName(qMetaTypeId()); ((!(tName)) ? qt_assert("tName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1914) : qt_noop()); ((!(uName)) ? qt_assert("uName","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetatype.h",1914) : qt_noop()); const int tNameLen = qstrlen(tName); const int uNameLen = 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 >( typeName, reinterpret_cast< std::pair * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; namespace QtPrivate { template struct SharedPointerMetaTypeIdHelper, 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 >( typeName, reinterpret_cast< QSharedPointer * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template struct MetaTypeSmartPointerHelper , typename QEnableIf ::Value > ::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor > o; static const QtPrivate::ConverterFunctor, QObject*, QSmartPointerConvertFunctor > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template struct QMetaTypeId< QSharedPointer > : QtPrivate::SharedPointerMetaTypeIdHelper< QSharedPointer, QtPrivate::IsPointerToTypeDerivedFromQObject ::Value> { }; namespace QtPrivate { template struct SharedPointerMetaTypeIdHelper, 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 >( typeName, reinterpret_cast< QWeakPointer * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template struct MetaTypeSmartPointerHelper , typename QEnableIf ::Value > ::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor > o; static const QtPrivate::ConverterFunctor, QObject*, QSmartPointerConvertFunctor > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template struct QMetaTypeId< QWeakPointer > : QtPrivate::SharedPointerMetaTypeIdHelper< QWeakPointer, QtPrivate::IsPointerToTypeDerivedFromQObject ::Value> { }; namespace QtPrivate { template struct SharedPointerMetaTypeIdHelper, 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 >( typeName, reinterpret_cast< QPointer * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template struct MetaTypeSmartPointerHelper , typename QEnableIf ::Value > ::Type> { static bool registerConverter(int id) { const int toId = QMetaType::QObjectStar; if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtPrivate::QSmartPointerConvertFunctor > o; static const QtPrivate::ConverterFunctor, QObject*, QSmartPointerConvertFunctor > > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } template struct QMetaTypeId< QPointer > : QtPrivate::SharedPointerMetaTypeIdHelper< QPointer, QtPrivate::IsPointerToTypeDerivedFromQObject ::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(creator) , m_deleter(deleter) , m_saveOp(saveOp) , m_loadOp(loadOp) , m_constructor(constructor) , m_destructor(destructor) , m_extension(0) , 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 { if (__builtin_expect(! !(isExtended(CreateEx)), false)) return createExtended(copy); return m_creator(copy); } inline void QMetaType::destroy(void *data) const { if (__builtin_expect(! !(isExtended(DestroyEx)), false)) return destroyExtended(data); m_deleter(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 { enum { Defined = 1, IsBuiltIn = true, MetaType = 43 }; static inline constexpr int qt_metatype_id() { return 43; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 1 }; static inline constexpr int qt_metatype_id() { return 1; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 2 }; static inline constexpr int qt_metatype_id() { return 2; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 3 }; static inline constexpr int qt_metatype_id() { return 3; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 4 }; static inline constexpr int qt_metatype_id() { return 4; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 5 }; static inline constexpr int qt_metatype_id() { return 5; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 6 }; static inline constexpr int qt_metatype_id() { return 6; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 32 }; static inline constexpr int qt_metatype_id() { return 32; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 33 }; static inline constexpr int qt_metatype_id() { return 33; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 34 }; static inline constexpr int qt_metatype_id() { return 34; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 35 }; static inline constexpr int qt_metatype_id() { return 35; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 36 }; static inline constexpr int qt_metatype_id() { return 36; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 37 }; static inline constexpr int qt_metatype_id() { return 37; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 38 }; static inline constexpr int qt_metatype_id() { return 38; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 40 }; static inline constexpr int qt_metatype_id() { return 40; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 31 }; static inline constexpr int qt_metatype_id() { return 31; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 7 }; static inline constexpr int qt_metatype_id() { return 7; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 10 }; static inline constexpr int qt_metatype_id() { return 10; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 11 }; static inline constexpr int qt_metatype_id() { return 11; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 12 }; static inline constexpr int qt_metatype_id() { return 12; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 13 }; static inline constexpr int qt_metatype_id() { return 13; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 14 }; static inline constexpr int qt_metatype_id() { return 14; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 15 }; static inline constexpr int qt_metatype_id() { return 15; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 16 }; static inline constexpr int qt_metatype_id() { return 16; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 17 }; static inline constexpr int qt_metatype_id() { return 17; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 18 }; static inline constexpr int qt_metatype_id() { return 18; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 19 }; static inline constexpr int qt_metatype_id() { return 19; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 20 }; static inline constexpr int qt_metatype_id() { return 20; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 21 }; static inline constexpr int qt_metatype_id() { return 21; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 22 }; static inline constexpr int qt_metatype_id() { return 22; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 23 }; static inline constexpr int qt_metatype_id() { return 23; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 24 }; static inline constexpr int qt_metatype_id() { return 24; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 25 }; static inline constexpr int qt_metatype_id() { return 25; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 26 }; static inline constexpr int qt_metatype_id() { return 26; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 27 }; static inline constexpr int qt_metatype_id() { return 27; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 29 }; static inline constexpr int qt_metatype_id() { return 29; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 30 }; static inline constexpr int qt_metatype_id() { return 30; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 41 }; static inline constexpr int qt_metatype_id() { return 41; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 42 }; static inline constexpr int qt_metatype_id() { return 42; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 44 }; static inline constexpr int qt_metatype_id() { return 44; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 45 }; static inline constexpr int qt_metatype_id() { return 45; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 46 }; static inline constexpr int qt_metatype_id() { return 46; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 47 }; static inline constexpr int qt_metatype_id() { return 47; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 48 }; static inline constexpr int qt_metatype_id() { return 48; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 39 }; static inline constexpr int qt_metatype_id() { return 39; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 8 }; static inline constexpr int qt_metatype_id() { return 8; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 9 }; static inline constexpr int qt_metatype_id() { return 9; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 28 }; static inline constexpr int qt_metatype_id() { return 28; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 64 }; static inline constexpr int qt_metatype_id() { return 64; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 65 }; static inline constexpr int qt_metatype_id() { return 65; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 66 }; static inline constexpr int qt_metatype_id() { return 66; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 67 }; static inline constexpr int qt_metatype_id() { return 67; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 68 }; static inline constexpr int qt_metatype_id() { return 68; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 69 }; static inline constexpr int qt_metatype_id() { return 69; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 70 }; static inline constexpr int qt_metatype_id() { return 70; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 71 }; static inline constexpr int qt_metatype_id() { return 71; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 72 }; static inline constexpr int qt_metatype_id() { return 72; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 73 }; static inline constexpr int qt_metatype_id() { return 73; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 74 }; static inline constexpr int qt_metatype_id() { return 74; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 75 }; static inline constexpr int qt_metatype_id() { return 75; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 76 }; static inline constexpr int qt_metatype_id() { return 76; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 77 }; static inline constexpr int qt_metatype_id() { return 77; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 78 }; static inline constexpr int qt_metatype_id() { return 78; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 79 }; static inline constexpr int qt_metatype_id() { return 79; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 80 }; static inline constexpr int qt_metatype_id() { return 80; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 81 }; static inline constexpr int qt_metatype_id() { return 81; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 82 }; static inline constexpr int qt_metatype_id() { return 82; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 83 }; static inline constexpr int qt_metatype_id() { return 83; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 84 }; static inline constexpr int qt_metatype_id() { return 84; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 85 }; static inline constexpr int qt_metatype_id() { return 85; } }; template< > struct QMetaTypeId2 { enum { Defined = 1, IsBuiltIn = true, MetaType = 86 }; static inline constexpr int qt_metatype_id() { return 86; } }; template< > struct QMetaTypeId2 { 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 inline bool QtPrivate::IsMetaTypePair::registerConverter(int id) { const int toId = qMetaTypeId(); if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtMetaTypePrivate::QPairVariantInterfaceConvertFunctor o; static const QtPrivate::ConverterFunctor > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } namespace QtPrivate { template struct ValueTypeIsMetaType { static bool registerConverter(int id) { const int toId = qMetaTypeId(); if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtMetaTypePrivate::QSequentialIterableConvertFunctor o; static const QtPrivate::ConverterFunctor > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; template struct AssociativeValueTypeIsMetaType { static bool registerConverter(int id) { const int toId = qMetaTypeId(); if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { QtMetaTypePrivate::QAssociativeIterableConvertFunctor o; static const QtPrivate::ConverterFunctor > f(o); return QMetaType::registerConverterFunction(&f, id, toId); } return true; } }; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmap.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiterator.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qpair.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qpair.h" 2 template struct QPair { typedef T1 first_type; typedef T2 second_type; QPair() : first(), second() {} QPair(const T1 &t1, const T2 &t2) : first(t1), second(t2) {} template QPair(const QPair &p) : first(p.first), second(p.second) {} template QPair &operator=(const QPair &p) { first = p.first; second = p.second; return *this; } template QPair(QPair &&p) : first(std::move(p.first)), second(std::move(p.second)) {} template QPair &operator=(QPair &&p) { first = std::move(p.first); second = std::move(p.second); return *this; } T1 first; T2 second; }; template class QTypeInfo > : public QTypeInfoMerger, T1, T2> {}; template inline bool operator==(const QPair &p1, const QPair &p2) { return p1.first == p2.first && p1.second == p2.second; } template inline bool operator!=(const QPair &p1, const QPair &p2) { return !(p1 == p2); } template inline bool operator<(const QPair &p1, const QPair &p2) { return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second); } template inline bool operator>(const QPair &p1, const QPair &p2) { return p2 < p1; } template inline bool operator<=(const QPair &p1, const QPair &p2) { return !(p2 < p1); } template inline bool operator>=(const QPair &p1, const QPair &p2) { return !(p1 < p2); } template QPair qMakePair(const T1 &x, const T2 &y) { return QPair(x, y); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 2 template inline bool qMapLessThanKey(const Key &key1, const Key &key2) { return key1 < key2; } template 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 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(const_cast(this)->nextNode()); } const QMapNodeBase *previousNode() const; QMapNodeBase *previousNode() { return const_cast(const_cast(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(p & ~Mask); } void setParent(QMapNodeBase *pp) { p = (p & Mask) | quintptr(pp); } QMapNodeBase *minimumNode() { QMapNodeBase *n = this; while (n->left) n = n->left; return n; } const QMapNodeBase *minimumNode() const { const QMapNodeBase *n = this; while (n->left) n = n->left; return n; } }; template struct QMapNode : public QMapNodeBase { Key key; T value; inline QMapNode *leftNode() const { return static_cast(left); } inline QMapNode *rightNode() const { return static_cast(right); } inline const QMapNode *nextNode() const { return static_cast(QMapNodeBase::nextNode()); } inline const QMapNode *previousNode() const { return static_cast(QMapNodeBase::previousNode()); } inline QMapNode *nextNode() { return static_cast(QMapNodeBase::nextNode()); } inline QMapNode *previousNode() { return static_cast(QMapNodeBase::previousNode()); } QMapNode *minimumNode() { return static_cast(QMapNodeBase::minimumNode()); } const QMapNode *minimumNode() const { return static_cast(QMapNodeBase::minimumNode()); } QMapNode *copy(QMapData *d) const; void destroySubTree(); QMapNode *lowerBound(const Key &key); QMapNode *upperBound(const Key &key); private: QMapNode() = delete; QMapNode(const QMapNode &) = delete; QMapNode &operator=(const QMapNode &) = delete; }; template inline QMapNode *QMapNode::lowerBound(const Key &akey) { QMapNode *n = this; QMapNode *lastNode = 0; while (n) { if (!qMapLessThanKey(n->key, akey)) { lastNode = n; n = n->leftNode(); } else { n = n->rightNode(); } } return lastNode; } template inline QMapNode *QMapNode::upperBound(const Key &akey) { QMapNode *n = this; QMapNode *lastNode = 0; 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 struct QMapData : public QMapDataBase { typedef QMapNode Node; Node *root() const { return static_cast(header.left); } const Node *end() const { return static_cast(&header); } Node *end() { return static_cast(&header); } const Node *begin() const { if (root()) return static_cast(mostLeftNode); return end(); } Node *begin() { if (root()) return static_cast(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 = 0, bool left = false) { Node *n = static_cast(QMapDataBase::createNode(sizeof(Node), __alignof__(Node), parent, left)); if (true) { new (&n->key) Key(k); if (true) { new (&n->value) T(v); } else { n->key.~Key(); qt_noop(); } } else { QMapDataBase::freeNodeAndRebalance(n); qt_noop(); } return n; } static QMapData *create() { return static_cast(createData()); } void destroy() { if (root()) { root()->destroySubTree(); freeTree(header.left, __alignof__(Node)); } freeData(this); } }; template QMapNode *QMapNode::copy(QMapData *d) const { QMapNode *n = d->createNode(key, value); n->setColor(color()); if (left) { n->left = leftNode()->copy(d); n->left->setParent(n); } else { n->left = 0; } if (right) { n->right = rightNode()->copy(d); n->right->setParent(n); } else { n->right = 0; } return n; } template void QMapNode::destroySubTree() { if (QTypeInfo::isComplex) key.~Key(); if (QTypeInfo::isComplex) value.~T(); if (QTypeInfo::isComplex || QTypeInfo::isComplex) { if (left) leftNode()->destroySubTree(); if (right) rightNode()->destroySubTree(); } } template void QMapData::deleteNode(QMapNode *z) { if (QTypeInfo::isComplex) z->key.~Key(); if (QTypeInfo::isComplex) z->value.~T(); freeNodeAndRebalance(z); } template QMapNode *QMapData::findNode(const Key &akey) const { if (Node *r = root()) { Node *lb = r->lowerBound(akey); if (lb && !qMapLessThanKey(akey, lb->key)) return lb; } return 0; } template void QMapData::nodeRange(const Key &akey, QMapNode **firstNode, QMapNode **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) : 0; if (!*firstNode) *firstNode = n; *lastNode = n->rightNode() ? n->rightNode()->upperBound(akey) : 0; if (!*lastNode) *lastNode = l; return; } } *firstNode = *lastNode = l; } template class QMap { typedef QMapNode Node; QMapData *d; public: inline QMap() : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { } inline QMap(std::initializer_list > list) : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) insert(it->first, it->second); } QMap(const QMap &other); inline ~QMap() { if (!d->ref.deref()) d->destroy(); } QMap &operator=(const QMap &other); inline QMap(QMap &&other) : d(other.d) { other.d = static_cast *>( const_cast(&QMapDataBase::shared_null)); } inline QMap &operator=(QMap &&other) { qSwap(d, other.d); return *this; } inline void swap(QMap &other) { qSwap(d, other.d); } explicit QMap(const typename std::map &other); std::map toStdMap() const; bool operator==(const QMap &other) const; inline bool operator!=(const QMap &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 &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 uniqueKeys() const; QList keys() const; QList keys(const T &value) const; QList values() const; QList values(const Key &key) const; int count(const Key &key) const; inline const Key &firstKey() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",400) : qt_noop()); return constBegin().key(); } inline const Key &lastKey() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",401) : qt_noop()); return (constEnd() - 1).key(); } inline T &first() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",403) : qt_noop()); return *begin(); } inline const T &first() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",404) : qt_noop()); return *constBegin(); } inline T &last() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",405) : qt_noop()); return *(end() - 1); } inline const T &last() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",406) : qt_noop()); 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(0) { } 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; }; 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(0) { } 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; }; friend class const_iterator; 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()); } 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 &unite(const QMap &other); typedef Key key_type; typedef T mapped_type; typedef qptrdiff difference_type; typedef int size_type; inline bool empty() const { return isEmpty(); } QPair equal_range(const Key &akey); private: void detach_helper(); bool isValidIterator(const const_iterator &ci) const { const QMapNodeBase *n = ci.i; while (n->parent()) n = n->parent(); return n->left == d->root(); } }; template inline QMap::QMap(const QMap &other) { if (other.d->ref.ref()) { d = other.d; } else { d = QMapData::create(); if (other.d->header.left) { d->header.left = static_cast(other.d->header.left)->copy(d); d->header.left->setParent(&d->header); d->recalcMostLeftNode(); } } } template inline QMap &QMap::operator=(const QMap &other) { if (d != other.d) { QMap tmp(other); tmp.swap(*this); } return *this; } template inline void QMap::clear() { *this = QMap(); } template inline const T QMap::value(const Key &akey, const T &adefaultValue) const { Node *n = d->findNode(akey); return n ? n->value : adefaultValue; } template inline const T QMap::operator[](const Key &akey) const { return value(akey); } template inline T &QMap::operator[](const Key &akey) { detach(); Node *n = d->findNode(akey); if (!n) return *insert(akey, T()); return n->value; } template inline int QMap::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 inline bool QMap::contains(const Key &akey) const { return d->findNode(akey) != 0; } template inline typename QMap::iterator QMap::insert(const Key &akey, const T &avalue) { detach(); Node *n = d->root(); Node *y = d->end(); Node *lastNode = 0; 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 typename QMap::iterator QMap::insert(const_iterator pos, const Key &akey, const T &avalue) { if (d->ref.isShared()) return this->insert(akey, avalue); ((!(isValidIterator(pos))) ? qt_assert_x("QMap::insert", "The specified const_iterator argument 'it' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",695) : qt_noop()); if (pos == constEnd()) { Node *n = static_cast(pos.i->left); if (n) { while (n->right) n = static_cast(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(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(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 == 0) { Node *z = d->createNode(akey, avalue, prev, false); return iterator(z); } if (next->left == 0) { Node *z = d->createNode(akey, avalue, next, true); return iterator(z); } ((!(false)) ? qt_assert("false","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",751) : qt_noop()); return this->insert(akey, avalue); } } } template inline typename QMap::iterator QMap::insertMulti(const Key &akey, const T &avalue) { detach(); Node* y = d->end(); Node* x = static_cast(d->root()); bool left = true; while (x != 0) { 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 typename QMap::iterator QMap::insertMulti(const_iterator pos, const Key &akey, const T &avalue) { if (d->ref.isShared()) return this->insertMulti(akey, avalue); ((!(isValidIterator(pos))) ? qt_assert_x("QMap::insertMulti", "The specified const_iterator argument 'pos' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",780) : qt_noop()); if (pos == constEnd()) { Node *n = static_cast(pos.i->left); if (n) { while (n->right) n = static_cast(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(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(pos.i->previousNode()); if (!qMapLessThanKey(prev->key, akey)) return this->insertMulti(akey, avalue); if (prev->right == 0) { Node *z = d->createNode(akey, avalue, prev, false); return iterator(z); } if (next->left == 0) { Node *z = d->createNode(akey, avalue, next, true); return iterator(z); } ((!(false)) ? qt_assert("false","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",820) : qt_noop()); return this->insertMulti(akey, avalue); } } } template inline typename QMap::const_iterator QMap::constFind(const Key &akey) const { Node *n = d->findNode(akey); return const_iterator(n ? n : d->end()); } template inline typename QMap::const_iterator QMap::find(const Key &akey) const { return constFind(akey); } template inline typename QMap::iterator QMap::find(const Key &akey) { detach(); Node *n = d->findNode(akey); return iterator(n ? n : d->end()); } template inline QMap &QMap::unite(const QMap &other) { QMap 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 QPair::iterator, typename QMap::iterator> QMap::equal_range(const Key &akey) { detach(); Node *firstNode, *lastNode; d->nodeRange(akey, &firstNode, &lastNode); return QPair(iterator(firstNode), iterator(lastNode)); } # 891 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" template int QMap::remove(const Key &akey) { detach(); int n = 0; while (Node *node = d->findNode(akey)) { d->deleteNode(node); ++n; } return n; } template T QMap::take(const Key &akey) { detach(); Node *node = d->findNode(akey); if (node) { T t = node->value; d->deleteNode(node); return t; } return T(); } template typename QMap::iterator QMap::erase(iterator it) { if (it == iterator(d->end())) return it; ((!(isValidIterator(const_iterator(it)))) ? qt_assert_x("QMap::erase", "The specified iterator argument 'it' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",924) : qt_noop()); 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()); ((!(it != iterator(d->end()))) ? qt_assert_x("QMap::erase", "Unable to locate same key in erase after detach.","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",939) : qt_noop()); while (backStepsWithSameKey > 0) { ++it; --backStepsWithSameKey; } } Node *n = it.i; ++it; d->deleteNode(n); return it; } template void QMap::detach_helper() { QMapData *x = QMapData::create(); if (d->header.left) { x->header.left = static_cast(d->header.left)->copy(x); x->header.left->setParent(&x->header); } if (!d->ref.deref()) d->destroy(); d = x; d->recalcMostLeftNode(); } template QList QMap::uniqueKeys() const { QList 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 QList QMap::keys() const { QList res; res.reserve(size()); const_iterator i = begin(); while (i != end()) { res.append(i.key()); ++i; } return res; } template QList QMap::keys(const T &avalue) const { QList res; const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) res.append(i.key()); ++i; } return res; } template const Key QMap::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 QList QMap::values() const { QList res; res.reserve(size()); const_iterator i = begin(); while (i != end()) { res.append(i.value()); ++i; } return res; } template QList QMap::values(const Key &akey) const { QList res; Node *n = d->findNode(akey); if (n) { const_iterator it(n); do { res.append(*it); ++it; } while (it != constEnd() && !qMapLessThanKey(akey, it.key())); } return res; } template inline typename QMap::const_iterator QMap::lowerBound(const Key &akey) const { Node *lb = d->root() ? d->root()->lowerBound(akey) : 0; if (!lb) lb = d->end(); return const_iterator(lb); } template inline typename QMap::iterator QMap::lowerBound(const Key &akey) { detach(); Node *lb = d->root() ? d->root()->lowerBound(akey) : 0; if (!lb) lb = d->end(); return iterator(lb); } template inline typename QMap::const_iterator QMap::upperBound(const Key &akey) const { Node *ub = d->root() ? d->root()->upperBound(akey) : 0; if (!ub) ub = d->end(); return const_iterator(ub); } template inline typename QMap::iterator QMap::upperBound(const Key &akey) { detach(); Node *ub = d->root() ? d->root()->upperBound(akey) : 0; if (!ub) ub = d->end(); return iterator(ub); } template bool QMap::operator==(const QMap &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 QMap::QMap(const std::map &other) { d = QMapData::create(); typename std::map::const_iterator it = other.end(); while (it != other.begin()) { --it; d->createNode((*it).first, (*it).second, d->begin(), true); } } template std::map QMap::toStdMap() const { std::map map; const_iterator it = end(); while (it != begin()) { --it; map.insert(map.begin(), std::pair(it.key(), it.value())); } return map; } template class QMultiMap : public QMap { public: QMultiMap() {} inline QMultiMap(std::initializer_list > list) { for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) insert(it->first, it->second); } QMultiMap(const QMap &other) : QMap(other) {} inline void swap(QMultiMap &other) { QMap::swap(other); } inline typename QMap::iterator replace(const Key &key, const T &value) { return QMap::insert(key, value); } inline typename QMap::iterator insert(const Key &key, const T &value) { return QMap::insertMulti(key, value); } inline typename QMap::iterator insert(typename QMap::const_iterator pos, const Key &key, const T &value) { return QMap::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::contains; using QMap::remove; using QMap::count; using QMap::find; using QMap::constFind; # 1186 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h" 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::iterator find(const Key &key, const T &value) { typename QMap::iterator i(find(key)); typename QMap::iterator end(this->end()); while (i != end && !qMapLessThanKey(key, i.key())) { if (i.value() == value) return i; ++i; } return end; } typename QMap::const_iterator find(const Key &key, const T &value) const { typename QMap::const_iterator i(constFind(key)); typename QMap::const_iterator end(QMap::constEnd()); while (i != end && !qMapLessThanKey(key, i.key())) { if (i.value() == value) return i; ++i; } return end; } typename QMap::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 inline bool QMultiMap::contains(const Key &key, const T &value) const { return constFind(key, value) != QMap::constEnd(); } template inline int QMultiMap::remove(const Key &key, const T &value) { int n = 0; typename QMap::iterator i(find(key)); typename QMap::iterator end(QMap::end()); while (i != end && !qMapLessThanKey(key, i.key())) { if (i.value() == value) { i = this->erase(i); ++n; } else { ++i; } } return n; } template inline int QMultiMap::count(const Key &key, const T &value) const { int n = 0; typename QMap::const_iterator i(constFind(key)); typename QMap::const_iterator end(QMap::constEnd()); while (i != end && !qMapLessThanKey(key, i.key())) { if (i.value() == value) ++n; ++i; } return n; } template class QMapIterator { typedef typename QMap ::const_iterator const_iterator; typedef const_iterator Item; QMap c; const_iterator i, n; inline bool item_exists() const { return n != c . constEnd(); } public: inline QMapIterator(const QMap &container) : c(container), i(c . constBegin()), n(c . constEnd()) {} inline QMapIterator &operator=(const QMap &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 { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",1257) : qt_noop()); return *n; } inline const Key &key() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",1257) : qt_noop()); 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 QMutableMapIterator { typedef typename QMap ::iterator iterator; typedef typename QMap ::const_iterator const_iterator; typedef iterator Item; QMap *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableMapIterator(QMap &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableMapIterator() { c->setSharable(true); } inline QMutableMapIterator &operator=(QMap &container) { c->setSharable(true); c = &container; c->setSharable(false); 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() { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",1258) : qt_noop()); return *n; } inline const T &value() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",1258) : qt_noop()); return *n; } inline const Key &key() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qmap.h",1258) : qt_noop()); 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; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmap.h" 2 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qchar.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiterator.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 2 class QBitArray; class QByteArray; class QString; class QStringRef; class QLatin1String; inline uint qHash(char key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(uchar key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(signed char key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(ushort key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(short key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(uint key, uint seed = 0) noexcept { return key ^ seed; } inline uint qHash(int key, uint seed = 0) noexcept { return uint(key) ^ seed; } inline uint qHash(ulong key, uint seed = 0) noexcept { if (sizeof(ulong) > sizeof(uint)) { return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed; } else { return uint(key & (~0U)) ^ seed; } } inline uint qHash(long key, uint seed = 0) noexcept { return qHash(ulong(key), seed); } inline uint qHash(quint64 key, uint seed = 0) noexcept { if (sizeof(quint64) > sizeof(uint)) { return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed; } else { return uint(key & (~0U)) ^ seed; } } inline uint qHash(qint64 key, uint seed = 0) noexcept { return qHash(quint64(key), seed); } inline uint qHash(QChar key, uint seed = 0) noexcept { return qHash(key.unicode(), seed); } __attribute__((visibility("default"))) uint qHash(const QByteArray &key, uint seed = 0) noexcept; __attribute__((visibility("default"))) uint qHash(const QString &key, uint seed = 0) noexcept; __attribute__((visibility("default"))) uint qHash(const QStringRef &key, uint seed = 0) noexcept; __attribute__((visibility("default"))) uint qHash(const QBitArray &key, uint seed = 0) noexcept; __attribute__((visibility("default"))) uint qHash(QLatin1String key, uint seed = 0) noexcept; __attribute__((visibility("default"))) uint qt_hash(const QString &key) noexcept; __attribute__((visibility("default"))) uint qt_hash(const QStringRef &key) noexcept; template inline uint qHash(const T *key, uint seed = 0) noexcept { return qHash(reinterpret_cast(key), seed); } template inline uint qHash(const T &t, uint seed) noexcept(noexcept(qHash(t))) { return (qHash(t) ^ seed); } template inline uint qHash(const QPair &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; } 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) { if (true) { rehash(qMax(int(numBits) - 2, int(userNumBits))); } else { } } } inline QHashData::Node *QHashData::firstNode() { Node *e = reinterpret_cast(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 { 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), isLarge = (sizeof(QHashDummyValue)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QHashDummyValue) }; static inline const char *name() { return "QHashDummyValue"; } }; template 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; } }; template struct QHashDummyNode { QHashNode *next; const uint h; const Key key; inline QHashDummyNode(const Key &key0, uint hash, QHashNode *n) : next(n), h(hash), key(key0) {} }; # 270 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" template class QHash { typedef QHashDummyNode DummyNode; typedef QHashNode Node; union { QHashData *d; QHashNode *e; }; static inline Node *concrete(QHashData::Node *node) { return reinterpret_cast(node); } static inline int alignOfNode() { return qMax(sizeof(void*), __alignof__(Node)); } static inline int alignOfDummyNode() { return qMax(sizeof(void*), __alignof__(DummyNode)); } public: inline QHash() : d(const_cast(&QHashData::shared_null)) { } inline QHash(std::initializer_list > list) : d(const_cast(&QHashData::shared_null)) { reserve(list.size()); for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) insert(it->first, it->second); } inline QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QHash() { if (!d->ref.deref()) freeData(d); } QHash &operator=(const QHash &other); inline QHash(QHash &&other) : d(other.d) { other.d = const_cast(&QHashData::shared_null); } inline QHash &operator=(QHash &&other) { qSwap(d, other.d); return *this; } inline void swap(QHash &other) { qSwap(d, other.d); } bool operator==(const QHash &other) const; inline 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; } inline 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 uniqueKeys() const; QList keys() const; QList keys(const T &value) const; QList values() const; QList values(const Key &key) const; int count(const Key &key) const; class const_iterator; class iterator { friend class const_iterator; friend class QHash; 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(0) { } explicit inline iterator(void *node) : i(reinterpret_cast(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; 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(0) { } explicit inline const_iterator(void *node) : i(reinterpret_cast(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; 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); } 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 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 = 0) 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 { QHashData::Node *node = it.i; while (node->next) node = node->next; return (static_cast(node) == d); } friend class QSet; }; template inline void QHash::deleteNode(Node *node) { deleteNode2(reinterpret_cast(node)); d->freeNode(node); } template inline void QHash::deleteNode2(QHashData::Node *node) { concrete(node)->~Node(); } template inline void QHash::duplicateNode(QHashData::Node *node, void *newNode) { Node *concreteNode = concrete(node); if (QTypeInfo::isDummy) { (void) new (newNode) DummyNode(concreteNode->key, concreteNode->h, 0); } else { (void) new (newNode) Node(concreteNode->key, concreteNode->value, concreteNode->h, 0); } } template inline typename QHash::Node * QHash::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode) { Node *node; if (QTypeInfo::isDummy) { node = reinterpret_cast(new (d->allocateNode(alignOfDummyNode())) DummyNode(akey, ah, *anextNode)); } else { node = new (d->allocateNode(alignOfNode())) Node(akey, avalue, ah, *anextNode); } *anextNode = node; ++d->size; return node; } template inline QHash &QHash::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 void QHash::freeData(QHashData *x) { x->free_helper(deleteNode2); } template inline void QHash::clear() { *this = QHash(); } template void QHash::detach_helper() { QHashData *x = d->detach_helper(duplicateNode, deleteNode2, QTypeInfo::isDummy ? sizeof(DummyNode) : sizeof(Node), QTypeInfo::isDummy ? alignOfDummyNode() : alignOfNode()); if (!d->ref.deref()) freeData(d); d = x; } template inline QHash &QHash::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 inline const T QHash::value(const Key &akey) const { Node *node; if (d->size == 0 || (node = *findNode(akey)) == e) { return T(); } else { return node->value; } } template inline const T QHash::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 QList QHash::uniqueKeys() const { QList 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 QList QHash::keys() const { QList res; res.reserve(size()); const_iterator i = begin(); while (i != end()) { res.append(i.key()); ++i; } return res; } template QList QHash::keys(const T &avalue) const { QList res; const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) res.append(i.key()); ++i; } return res; } template const Key QHash::key(const T &avalue) const { return key(avalue, Key()); } template const Key QHash::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 QList QHash::values() const { QList res; res.reserve(size()); const_iterator i = begin(); while (i != end()) { res.append(i.value()); ++i; } return res; } template QList QHash::values(const Key &akey) const { QList res; Node *node = *findNode(akey); if (node != e) { do { res.append(node->value); } while ((node = node->next) != e && node->key == akey); } return res; } template int QHash::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 inline const T QHash::operator[](const Key &akey) const { return value(akey); } template inline T &QHash::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 inline typename QHash::iterator QHash::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 (!QTypeInfo::isDummy) (*node)->value = avalue; return iterator(*node); } template inline typename QHash::iterator QHash::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 int QHash::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 T QHash::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 typename QHash::iterator QHash::erase(iterator it) { ((!(isValidIterator(it))) ? qt_assert_x("QHash::erase", "The specified iterator argument 'it' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",848) : qt_noop()); if (it == iterator(e)) return it; if (d->ref.isShared()) { int bucketNum = (it.i->h % d->numBuckets); iterator bucketIterator(*(d->buckets + bucketNum)); int stepsFromBucketStartToIte = 0; while (bucketIterator != it) { ++stepsFromBucketStartToIte; ++bucketIterator; } detach(); it = iterator(*(d->buckets + bucketNum)); while (stepsFromBucketStartToIte > 0) { --stepsFromBucketStartToIte; ++it; } } iterator ret = it; ++ret; Node *node = concrete(it.i); Node **node_ptr = reinterpret_cast(&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 inline void QHash::reserve(int asize) { detach(); d->rehash(-qMax(asize, 1)); } template inline typename QHash::const_iterator QHash::find(const Key &akey) const { return const_iterator(*findNode(akey)); } template inline typename QHash::const_iterator QHash::constFind(const Key &akey) const { return const_iterator(*findNode(akey)); } template inline typename QHash::iterator QHash::find(const Key &akey) { detach(); return iterator(*findNode(akey)); } template inline bool QHash::contains(const Key &akey) const { return *findNode(akey) != e; } template typename QHash::Node **QHash::findNode(const Key &akey, uint *ahp) const { Node **node; uint h = 0; if (d->numBuckets || ahp) { h = qHash(akey, d->seed); if (ahp) *ahp = h; } if (d->numBuckets) { node = reinterpret_cast(&d->buckets[h % d->numBuckets]); ((!(*node == e || (*node)->next)) ? qt_assert("*node == e || (*node)->next","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",928) : qt_noop()); while (*node != e && !(*node)->same_key(h, akey)) node = &(*node)->next; } else { node = const_cast(reinterpret_cast(&e)); } return node; } template bool QHash::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 (!QTypeInfo::isDummy && !(it.value() == it2.value())) return false; ++it; ++it2; } while (it != end() && it.key() == akey); } return true; } template class QMultiHash : public QHash { public: QMultiHash() {} inline QMultiHash(std::initializer_list > list) { this->reserve(list.size()); for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) insert(it->first, it->second); } QMultiHash(const QHash &other) : QHash(other) {} inline void swap(QMultiHash &other) { QHash::swap(other); } inline typename QHash::iterator replace(const Key &key, const T &value) { return QHash::insert(key, value); } inline typename QHash::iterator insert(const Key &key, const T &value) { return QHash::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::contains; using QHash::remove; using QHash::count; using QHash::find; using QHash::constFind; # 1013 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h" 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::iterator find(const Key &key, const T &value) { typename QHash::iterator i(find(key)); typename QHash::iterator end(this->end()); while (i != end && i.key() == key) { if (i.value() == value) return i; ++i; } return end; } typename QHash::const_iterator find(const Key &key, const T &value) const { typename QHash::const_iterator i(constFind(key)); typename QHash::const_iterator end(QHash::constEnd()); while (i != end && i.key() == key) { if (i.value() == value) return i; ++i; } return end; } typename QHash::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 inline bool QMultiHash::contains(const Key &key, const T &value) const { return constFind(key, value) != QHash::constEnd(); } template inline int QMultiHash::remove(const Key &key, const T &value) { int n = 0; typename QHash::iterator i(find(key)); typename QHash::iterator end(QHash::end()); while (i != end && i.key() == key) { if (i.value() == value) { i = this->erase(i); ++n; } else { ++i; } } return n; } template inline int QMultiHash::count(const Key &key, const T &value) const { int n = 0; typename QHash::const_iterator i(constFind(key)); typename QHash::const_iterator end(QHash::constEnd()); while (i != end && i.key() == key) { if (i.value() == value) ++n; ++i; } return n; } template class QHashIterator { typedef typename QHash ::const_iterator const_iterator; typedef const_iterator Item; QHash c; const_iterator i, n; inline bool item_exists() const { return n != c . constEnd(); } public: inline QHashIterator(const QHash &container) : c(container), i(c . constBegin()), n(c . constEnd()) {} inline QHashIterator &operator=(const QHash &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 { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",1084) : qt_noop()); return *n; } inline const Key &key() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",1084) : qt_noop()); 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 QMutableHashIterator { typedef typename QHash ::iterator iterator; typedef typename QHash ::const_iterator const_iterator; typedef iterator Item; QHash *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableHashIterator(QHash &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableHashIterator() { c->setSharable(true); } inline QMutableHashIterator &operator=(QHash &container) { c->setSharable(true); c = &container; c->setSharable(false); 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() { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",1085) : qt_noop()); return *n; } inline const T &value() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",1085) : qt_noop()); return *n; } inline const Key &key() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qhash.h",1085) : qt_noop()); 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; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 2 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 52 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringlist.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdatastream.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdatastream.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qscopedpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qscopedpointer.h" 2 template struct QScopedPointerDeleter { static inline void cleanup(T *pointer) { typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ]; (void) sizeof(IsIncompleteType); delete pointer; } }; template 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 struct QScopedPointerObjectDeleteLater { static inline void cleanup(T *pointer) { if (pointer) pointer->deleteLater(); } }; class QObject; typedef QScopedPointerObjectDeleteLater QScopedPointerDeleteLater; template > class QScopedPointer { typedef T *QScopedPointer:: *RestrictedBool; public: explicit inline QScopedPointer(T *p = 0) : d(p) { } inline ~QScopedPointer() { T *oldD = this->d; Cleanup::cleanup(oldD); } inline T &operator*() const { ((!(d)) ? qt_assert("d","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qscopedpointer.h",114) : qt_noop()); return *d; } inline T *operator->() const { ((!(d)) ? qt_assert("d","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qscopedpointer.h",120) : qt_noop()); return d; } inline bool operator!() const { return !d; } # 135 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qscopedpointer.h" inline operator RestrictedBool() const { return isNull() ? 0 : &QScopedPointer::d; } inline T *data() const { return d; } inline bool isNull() const { return !d; } inline void reset(T *other = 0) { if (d == other) return; T *oldD = d; d = other; Cleanup::cleanup(oldD); } inline T *take() { T *oldD = d; d = 0; return oldD; } inline void swap(QScopedPointer &other) { qSwap(d, other.d); } typedef T *pointer; protected: T *d; private: QScopedPointer(const QScopedPointer &) = delete; QScopedPointer &operator=(const QScopedPointer &) = delete; }; template inline bool operator==(const QScopedPointer &lhs, const QScopedPointer &rhs) { return lhs.data() == rhs.data(); } template inline bool operator!=(const QScopedPointer &lhs, const QScopedPointer &rhs) { return lhs.data() != rhs.data(); } template inline void qSwap(QScopedPointer &p1, QScopedPointer &p2) { p1.swap(p2); } namespace std { template inline void swap(::QScopedPointer &p1, ::QScopedPointer &p2) { p1.swap(p2); } } namespace QtPrivate { template struct QScopedArrayEnsureSameType; template struct QScopedArrayEnsureSameType { typedef X* Type; }; template struct QScopedArrayEnsureSameType { typedef X* Type; }; } template > class QScopedArrayPointer : public QScopedPointer { public: inline QScopedArrayPointer() : QScopedPointer(0) {} template explicit inline QScopedArrayPointer(D *p, typename QtPrivate::QScopedArrayEnsureSameType::Type = 0) : QScopedPointer(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 *) { } QScopedArrayPointer(const QScopedArrayPointer &) = delete; QScopedArrayPointer &operator=(const QScopedArrayPointer &) = delete; }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdatastream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiodevice.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 52 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 1 # 56 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 57 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject_impl.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject_impl.h" 1 namespace QtPrivate { # 95 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject_impl.h" template struct TypesAreDeclaredMetaType { enum { Value = false }; }; template <> struct TypesAreDeclaredMetaType> { enum { Value = true }; }; template struct TypesAreDeclaredMetaType > { enum { Value = QMetaTypeId2::Defined && TypesAreDeclaredMetaType>::Value }; }; template ::Value > struct ConnectionTypes { static const int *types() { return 0; } }; template <> struct ConnectionTypes, true> { static const int *types() { return 0; } }; template struct ConnectionTypes, true> { static const int *types() { static const int t[sizeof...(Args) + 1] = { (QtPrivate::QMetaTypeIdHelper::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, 0, 0, 0); } inline bool compare(void **a) { bool ret; m_impl(Compare, this, 0, a, &ret); return ret; } inline void call(QObject *r, void **a) { m_impl(Call, this, r, a, 0); } protected: ~QSlotObjectBase() {} }; template class QSlotObject : public QSlotObjectBase { typedef QtPrivate::FunctionPointer FuncType; Func function; static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) { switch (which) { case Destroy: delete static_cast(this_); break; case Call: FuncType::template call(static_cast(this_)->function, static_cast(r), a); break; case Compare: *ret = *reinterpret_cast(a) == static_cast(this_)->function; break; case NumOperations: ; } } public: explicit QSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} }; template class QStaticSlotObject : public QSlotObjectBase { typedef QtPrivate::FunctionPointer FuncType; Func function; static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) { switch (which) { case Destroy: delete static_cast(this_); break; case Call: FuncType::template call(static_cast(this_)->function, r, a); break; case Compare: *ret = false; break; case NumOperations: ; } } public: explicit QStaticSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} }; template class QFunctorSlotObject : public QSlotObjectBase { typedef QtPrivate::Functor FuncType; Func function; static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) { switch (which) { case Destroy: delete static_cast(this_); break; case Call: FuncType::template call(static_cast(this_)->function, r, a); break; case Compare: *ret = false; break; case NumOperations: ; } } public: explicit QFunctorSlotObject(const Func &f) : QSlotObjectBase(&impl), function(f) {} }; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject_impl.h" 2 # 59 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 QObjectList; __attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QString &name, const QMetaObject &mo, QList *list, Qt::FindChildOptions options); __attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QRegExp &re, const QMetaObject &mo, QList *list, Qt::FindChildOptions options); __attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re, const QMetaObject &mo, QList *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 inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: static void qt_static_metacall(QObject *, QMetaObject::Call, int, void * *); struct QPrivateSignal {}; inline QObjectPrivate* d_func() { return reinterpret_cast(qGetPtrHelper(d_ptr)); } inline const QObjectPrivate* d_func() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } friend class QObjectPrivate; public: explicit QObject(QObject *parent=0); virtual ~QObject(); virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); # 141 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 { return d_ptr->blockSig; } bool blockSignals(bool b); QThread *thread() const; void moveToThread(QThread *thread); int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); void killTimer(int id); template inline T findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const { return static_cast(qt_qFindChild_helper(this, aName, reinterpret_cast(0)->staticMetaObject, options)); } template inline QList findChildren(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const { QList list; qt_qFindChildren_helper(this, aName, reinterpret_cast(0)->staticMetaObject, reinterpret_cast *>(&list), options); return list; } template inline QList findChildren(const QRegExp &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const { QList list; qt_qFindChildren_helper(this, re, reinterpret_cast(0)->staticMetaObject, reinterpret_cast *>(&list), options); return list; } template inline QList findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const { QList list; qt_qFindChildren_helper(this, re, reinterpret_cast(0)->staticMetaObject, reinterpret_cast *>(&list), options); return list; } inline const QObjectList &children() const { return d_ptr->children; } void setParent(QObject *); void installEventFilter(QObject *); void removeEventFilter(QObject *); 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 static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer::Object *receiver, Func2 slot, Qt::ConnectionType type = Qt::AutoConnection) { typedef QtPrivate::FunctionPointer SignalType; typedef QtPrivate::FunctionPointer SlotType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::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 ::value)), "Signal and slot arguments are not compatible."); static_assert(bool((QtPrivate::AreArgumentsCompatible ::value)), "Return type of the slot is not compatible with the return type of the signal."); const int *types = 0; if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) types = QtPrivate::ConnectionTypes::types(); return connectImpl(sender, reinterpret_cast(&signal), receiver, reinterpret_cast(&slot), new QtPrivate::QSlotObject::Value, typename SignalType::ReturnType>(slot), type, types, &SignalType::Object::staticMetaObject); } template static inline typename QtPrivate::QEnableIf::ArgumentCount) >= 0, QMetaObject::Connection>::Type connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, Func2 slot) { return connect(sender, signal, sender, slot, Qt::DirectConnection); } template static inline typename QtPrivate::QEnableIf::ArgumentCount) >= 0 && !QtPrivate::FunctionPointer::IsPointerToMemberFunction, QMetaObject::Connection>::Type connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const QObject *context, Func2 slot, Qt::ConnectionType type = Qt::AutoConnection) { typedef QtPrivate::FunctionPointer SignalType; typedef QtPrivate::FunctionPointer SlotType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::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 ::value)), "Signal and slot arguments are not compatible."); static_assert(bool((QtPrivate::AreArgumentsCompatible ::value)), "Return type of the slot is not compatible with the return type of the signal."); const int *types = 0; if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) types = QtPrivate::ConnectionTypes::types(); return connectImpl(sender, reinterpret_cast(&signal), context, 0, new QtPrivate::QStaticSlotObject::Value, typename SignalType::ReturnType>(slot), type, types, &SignalType::Object::staticMetaObject); } template static inline typename QtPrivate::QEnableIf::ArgumentCount == -1, QMetaObject::Connection>::Type connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, Func2 slot) { return connect(sender, signal, sender, slot, Qt::DirectConnection); } template static inline typename QtPrivate::QEnableIf::ArgumentCount == -1, QMetaObject::Connection>::Type connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const QObject *context, Func2 slot, Qt::ConnectionType type = Qt::AutoConnection) { typedef QtPrivate::FunctionPointer SignalType; const int FunctorArgumentCount = QtPrivate::ComputeFunctorArgumentCount::Value; static_assert(bool((FunctorArgumentCount >= 0)), "Signal and slot arguments are not compatible."); const int SlotArgumentCount = (FunctorArgumentCount >= 0) ? FunctorArgumentCount : 0; typedef typename QtPrivate::FunctorReturnType::Value>::Value SlotReturnType; # 336 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" static_assert(bool((QtPrivate::AreArgumentsCompatible ::value)), "Return type of the slot is not compatible with the return type of the signal."); static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "No Q_OBJECT in the class with the signal"); const int *types = 0; if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) types = QtPrivate::ConnectionTypes::types(); return connectImpl(sender, reinterpret_cast(&signal), context, 0, new QtPrivate::QFunctorSlotObject::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 = 0, const QObject *receiver = 0, const char *member = 0) const { return disconnect(this, signal, receiver, member); } inline bool disconnect(const QObject *receiver, const char *member = 0) const { return disconnect(this, 0, receiver, member); } static bool disconnect(const QMetaObject::Connection &); template static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer::Object *receiver, Func2 slot) { typedef QtPrivate::FunctionPointer SignalType; typedef QtPrivate::FunctionPointer SlotType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "No Q_OBJECT in the class with the signal"); static_assert(bool((QtPrivate::CheckCompatibleArguments ::value)), "Signal and slot arguments are not compatible."); return disconnectImpl(sender, reinterpret_cast(&signal), receiver, reinterpret_cast(&slot), &SignalType::Object::staticMetaObject); } template static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const QObject *receiver, void **zero) { ((!(!zero)) ? qt_assert("!zero","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h",393) : qt_noop()); typedef QtPrivate::FunctionPointer SignalType; return disconnectImpl(sender, reinterpret_cast(&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 dynamicPropertyNames() const; static uint registerUserData(); void setUserData(uint id, QObjectUserData* data); QObjectUserData* userData(uint id) const; public: void destroyed(QObject * = 0); 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(this)->qt_metacast(classname) != 0; } 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 *); virtual void childEvent(QChildEvent *); virtual void customEvent(QEvent *); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); protected: QObject(QObjectPrivate &dd, QObject *parent = 0); protected: QScopedPointer d_ptr; static const QMetaObject 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(); }; # 515 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" template inline T qobject_cast(QObject *object) { typedef typename QtPrivate::remove_cv::type>::type ObjType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "qobject_cast requires the type to have a Q_OBJECT macro"); return static_cast(reinterpret_cast(object)->staticMetaObject.cast(object)); } template inline T qobject_cast(const QObject *object) { typedef typename QtPrivate::remove_cv::type>::type ObjType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "qobject_cast requires the type to have a Q_OBJECT macro"); return static_cast(reinterpret_cast(object)->staticMetaObject.cast(object)); } template inline const char * qobject_interface_iid() { return 0; } # 547 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h" __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QObject *); namespace QtPrivate { inline QObject & deref_for_methodcall(QObject &o) { return o; } inline QObject & deref_for_methodcall(QObject *o) { return *o; } } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 2 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 53 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h" 2 class QByteArray; class QIODevicePrivate; class __attribute__((visibility("default"))) QIODevice : public QObject { public: template inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: static void qt_static_metacall(QObject *, QMetaObject::Call, int, void * *); struct QPrivateSignal {}; public: enum OpenModeFlag { NotOpen = 0x0000, ReadOnly = 0x0001, WriteOnly = 0x0002, ReadWrite = ReadOnly | WriteOnly, Append = 0x0004, Truncate = 0x0008, Text = 0x0010, Unbuffered = 0x0020 }; typedef QFlags 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; 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; 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 bytesWritten(qint64 bytes); void aboutToClose(); void readChannelFinished(); protected: QIODevice(QIODevicePrivate &dd, QObject *parent = 0); 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(qGetPtrHelper(d_ptr)); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } friend class QIODevicePrivate; QIODevice(const QIODevice &) = delete; QIODevice &operator=(const QIODevice &) = delete; }; constexpr inline QFlags operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QIODevice::OpenMode::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QIODevice::OpenMode::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } class QDebug; __attribute__((visibility("default"))) QDebug operator<<(QDebug debug, QIODevice::OpenMode modes); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiodevice.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdatastream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdatastream.h" 2 class QByteArray; class QIODevice; template class QList; template class QLinkedList; template class QVector; template class QSet; template class QHash; template class QMap; class QDataStreamPrivate; class __attribute__((visibility("default"))) QDataStream { public: enum Version { Qt_1_0 = 1, Qt_2_0 = 2, Qt_2_1 = 3, Qt_3_0 = 4, Qt_3_1 = 5, Qt_3_3 = 6, Qt_4_0 = 7, Qt_4_1 = Qt_4_0, Qt_4_2 = 8, Qt_4_3 = 9, Qt_4_4 = 10, Qt_4_5 = 11, Qt_4_6 = 12, Qt_4_7 = Qt_4_6, Qt_4_8 = Qt_4_7, Qt_4_9 = Qt_4_8, Qt_5_0 = 13, Qt_5_1 = 14, Qt_5_2 = 15 }; enum ByteOrder { BigEndian = QSysInfo::BigEndian, LittleEndian = QSysInfo::LittleEndian }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed }; enum FloatingPointPrecision { SinglePrecision, DoublePrecision }; QDataStream(); explicit QDataStream(QIODevice *); QDataStream(QByteArray *, QIODevice::OpenMode flags); QDataStream(const QByteArray &); ~QDataStream(); QIODevice *device() const; void setDevice(QIODevice *); void unsetDevice(); bool atEnd() const; Status status() const; void setStatus(Status status); void resetStatus(); FloatingPointPrecision floatingPointPrecision() const; void setFloatingPointPrecision(FloatingPointPrecision precision); ByteOrder byteOrder() const; void setByteOrder(ByteOrder); int version() const; void setVersion(int); QDataStream &operator>>(qint8 &i); QDataStream &operator>>(quint8 &i); QDataStream &operator>>(qint16 &i); QDataStream &operator>>(quint16 &i); QDataStream &operator>>(qint32 &i); QDataStream &operator>>(quint32 &i); QDataStream &operator>>(qint64 &i); QDataStream &operator>>(quint64 &i); QDataStream &operator>>(bool &i); QDataStream &operator>>(float &f); QDataStream &operator>>(double &f); QDataStream &operator>>(char *&str); QDataStream &operator<<(qint8 i); QDataStream &operator<<(quint8 i); QDataStream &operator<<(qint16 i); QDataStream &operator<<(quint16 i); QDataStream &operator<<(qint32 i); QDataStream &operator<<(quint32 i); QDataStream &operator<<(qint64 i); QDataStream &operator<<(quint64 i); QDataStream &operator<<(bool i); QDataStream &operator<<(float f); QDataStream &operator<<(double f); QDataStream &operator<<(const char *str); QDataStream &readBytes(char *&, uint &len); int readRawData(char *, int len); QDataStream &writeBytes(const char *, uint len); int writeRawData(const char *, int len); int skipRawData(int len); private: QDataStream(const QDataStream &) = delete; QDataStream &operator=(const QDataStream &) = delete; QScopedPointer d; QIODevice *dev; bool owndev; bool noswap; ByteOrder byteorder; int ver; Status q_status; }; inline QIODevice *QDataStream::device() const { return dev; } inline QDataStream::ByteOrder QDataStream::byteOrder() const { return byteorder; } inline int QDataStream::version() const { return ver; } inline void QDataStream::setVersion(int v) { ver = v; } inline QDataStream &QDataStream::operator>>(quint8 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint16 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint32 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint64 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator<<(quint8 i) { return *this << qint8(i); } inline QDataStream &QDataStream::operator<<(quint16 i) { return *this << qint16(i); } inline QDataStream &QDataStream::operator<<(quint32 i) { return *this << qint32(i); } inline QDataStream &QDataStream::operator<<(quint64 i) { return *this << qint64(i); } template QDataStream& operator>>(QDataStream& s, QList& l) { l.clear(); quint32 c; s >> c; l.reserve(c); for(quint32 i = 0; i < c; ++i) { T t; s >> t; l.append(t); if (s.atEnd()) break; } return s; } template QDataStream& operator<<(QDataStream& s, const QList& l) { s << quint32(l.size()); for (int i = 0; i < l.size(); ++i) s << l.at(i); return s; } template QDataStream& operator>>(QDataStream& s, QLinkedList& l) { l.clear(); quint32 c; s >> c; for(quint32 i = 0; i < c; ++i) { T t; s >> t; l.append(t); if (s.atEnd()) break; } return s; } template QDataStream& operator<<(QDataStream& s, const QLinkedList& l) { s << quint32(l.size()); typename QLinkedList::ConstIterator it = l.constBegin(); for(; it != l.constEnd(); ++it) s << *it; return s; } template QDataStream& operator>>(QDataStream& s, QVector& v) { v.clear(); quint32 c; s >> c; v.resize(c); for(quint32 i = 0; i < c; ++i) { T t; s >> t; v[i] = t; } return s; } template QDataStream& operator<<(QDataStream& s, const QVector& v) { s << quint32(v.size()); for (typename QVector::const_iterator it = v.begin(); it != v.end(); ++it) s << *it; return s; } template QDataStream &operator>>(QDataStream &in, QSet &set) { set.clear(); quint32 c; in >> c; for (quint32 i = 0; i < c; ++i) { T t; in >> t; set << t; if (in.atEnd()) break; } return in; } template QDataStream& operator<<(QDataStream &out, const QSet &set) { out << quint32(set.size()); typename QSet::const_iterator i = set.constBegin(); while (i != set.constEnd()) { out << *i; ++i; } return out; } template QDataStream &operator>>(QDataStream &in, QHash &hash) { QDataStream::Status oldStatus = in.status(); in.resetStatus(); hash.clear(); quint32 n; in >> n; for (quint32 i = 0; i < n; ++i) { if (in.status() != QDataStream::Ok) break; Key k; T t; in >> k >> t; hash.insertMulti(k, t); } if (in.status() != QDataStream::Ok) hash.clear(); if (oldStatus != QDataStream::Ok) in.setStatus(oldStatus); return in; } template QDataStream &operator<<(QDataStream &out, const QHash& hash) { out << quint32(hash.size()); typename QHash::ConstIterator it = hash.end(); typename QHash::ConstIterator begin = hash.begin(); while (it != begin) { --it; out << it.key() << it.value(); } return out; } template QDataStream &operator>>(QDataStream &in, QMap &map) { QDataStream::Status oldStatus = in.status(); in.resetStatus(); map.clear(); quint32 n; in >> n; map.detach(); for (quint32 i = 0; i < n; ++i) { if (in.status() != QDataStream::Ok) break; aKey key; aT value; in >> key >> value; map.insertMulti(key, value); } if (in.status() != QDataStream::Ok) map.clear(); if (oldStatus != QDataStream::Ok) in.setStatus(oldStatus); return in; } template QDataStream &operator<<(QDataStream &out, const QMap &map) { out << quint32(map.size()); typename QMap::ConstIterator it = map.end(); typename QMap::ConstIterator begin = map.begin(); while (it != begin) { --it; out << it.key() << it.value(); } return out; } template inline QDataStream& operator>>(QDataStream& s, QPair& p) { s >> p.first >> p.second; return s; } template inline QDataStream& operator<<(QDataStream& s, const QPair& p) { s << p.first << p.second; return s; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdatastream.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qregexp.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qregexp.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qregexp.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qregexp.h" 2 struct QRegExpPrivate; class QStringList; 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); inline QRegExp &operator=(QRegExp &&other) { qSwap(priv,other.priv); return *this; } inline void swap(QRegExp &other) { 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); private: QRegExpPrivate *priv; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRegExp)>sizeof(void*)), isPointer = false, 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 &); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qregexp.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringmatcher.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringmatcher.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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; }; }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringmatcher.h" 2 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" 2 class QRegExp; class QRegularExpression; typedef QListIterator QStringListIterator; typedef QMutableListIterator QMutableStringListIterator; class QStringList : public QList { public: inline QStringList() { } inline explicit QStringList(const QString &i) { append(i); } inline QStringList(const QStringList &l) : QList(l) { } inline QStringList(const QList &l) : QList(l) { } inline QStringList(std::initializer_list args) : QList(args) { } 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 bool contains(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 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 filter(const QRegExp &rx) const; inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after); 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 QStringList filter(const QRegularExpression &re) const; inline QStringList &replaceInStrings(const QRegularExpression &re, const QString &after); inline int indexOf(const QRegularExpression &re, int from = 0) const; inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; using QList::indexOf; using QList::lastIndexOf; # 117 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstringlist.h" }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QStringList)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QStringList) }; static inline const char *name() { return "QStringList"; } }; 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 QStringList::sort(Qt::CaseSensitivity cs) { QtPrivate::QStringList_sort(this, cs); } inline int QStringList::removeDuplicates() { return QtPrivate::QStringList_removeDuplicates(this); } inline QString QStringList::join(const QString &sep) const { return QtPrivate::QStringList_join(this, sep.constData(), sep.length()); } inline QString QStringList::join(QChar sep) const { return QtPrivate::QStringList_join(this, &sep, 1); } inline QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_filter(this, str, cs); } inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_contains(this, str, cs); } inline QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(this, before, after, cs); return *this; } inline QStringList &QStringList::replaceInStrings(const QRegExp &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(this, rx, after); return *this; } inline QStringList QStringList::filter(const QRegExp &rx) const { return QtPrivate::QStringList_filter(this, 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 &QStringList::replaceInStrings(const QRegularExpression &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(this, rx, after); return *this; } inline QStringList QStringList::filter(const QRegularExpression &rx) const { return QtPrivate::QStringList_filter(this, 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); } inline QDataStream &operator>>(QDataStream &in, QStringList &list) { return operator>>(in, static_cast &>(list)); } inline QDataStream &operator<<(QDataStream &out, const QStringList &list) { return operator<<(out, static_cast &>(list)); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringlist.h" 2 # 53 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 54 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 inline QVariant qVariantFromValue(const T &); template inline T qvariant_cast(const QVariant &); namespace QtPrivate { template struct ObjectInvoker { static ReturnType invoke(Argument a) { return Derived::object(a); } }; template struct MetaTypeInvoker { static ReturnType invoke(Argument a) { return Derived::metaType(a); } }; template ::Value> struct TreatAsQObjectBeforeMetaType : ObjectInvoker { }; template struct TreatAsQObjectBeforeMetaType : MetaTypeInvoker { }; template 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, 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 }; inline QVariant(); ~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 &list); QVariant(const QMap &map); QVariant(const QHash &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 QJsonValue &jsonValue); QVariant(const QJsonObject &jsonObject); QVariant(const QJsonArray &jsonArray); QVariant(const QJsonDocument &jsonDocument); QVariant& operator=(const QVariant &other); inline QVariant(QVariant &&other) : d(other.d) { other.d = Private(); } inline QVariant &operator=(QVariant &&other) { qSwap(d, other.d); return *this; } inline void swap(QVariant &other) { 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 = 0) const; uint toUInt(bool *ok = 0) const; qlonglong toLongLong(bool *ok = 0) const; qulonglong toULongLong(bool *ok = 0) const; bool toBool() const; double toDouble(bool *ok = 0) const; float toFloat(bool *ok = 0) const; qreal toReal(bool *ok = 0) 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 toList() const; QMap toMap() const; QHash 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; 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 inline void setValue(const T &value); template inline T value() const { return qvariant_cast(*this); } template static inline QVariant fromValue(const T &value) { return qVariantFromValue(value); } template bool canConvert() const { return canConvert(qMetaTypeId()); } public: struct PrivateShared { inline PrivateShared(void *v) : ptr(v), ref(1) { } void *ptr; QAtomicInt ref; }; struct Private { inline Private(): type(Invalid), is_shared(false), is_null(true) { data.ptr = 0; } explicit inline Private(uint variantType) : type(variantType), is_shared(false), is_null(false) {} inline Private(const Private &other) : 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 friend inline T qvariant_cast(const QVariant &); template 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 inline QVariant qVariantFromValue(const T &t) { return QVariant(qMetaTypeId(), &t, QTypeInfo::isPointer); } template <> inline QVariant qVariantFromValue(const QVariant &t) { return t; } template inline void qVariantSetValue(QVariant &v, const T &t) { const uint type = qMetaTypeId(); 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(d.is_shared ? d.data.shared->ptr : &d.data.ptr); if (QTypeInfo::isComplex) old->~T(); new (old) T(t); } else { v = QVariant(type, &t, QTypeInfo::isPointer); } } template <> inline void qVariantSetValue(QVariant &v, const QVariant &t) { v = t; } inline QVariant::QVariant() {} inline bool QVariant::isValid() const { return d.type != Invalid; } template 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; } 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); } 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(); 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; QVariant value(const QVariant &key) const; int size() const; }; namespace QtPrivate { template struct QVariantValueHelper : TreatAsQObjectBeforeMetaType, T, const QVariant &, T> { static T metaType(const QVariant &v) { const int vid = qMetaTypeId(); if (vid == v.userType()) return *reinterpret_cast(v.constData()); T t; if (v.convert(vid, &t)) return t; return T(); } static T object(const QVariant &v) { return qobject_cast(QMetaType::typeFlags(v.userType()) & QMetaType::PointerToQObject ? v.d.data.o : QVariantValueHelper::metaType(v)); } }; template struct QVariantValueHelperInterface : QVariantValueHelper { }; template<> struct QVariantValueHelperInterface { static QSequentialIterable invoke(const QVariant &v) { if (v.userType() == qMetaTypeId()) { return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast(v.constData()))); } if (v.userType() == qMetaTypeId()) { return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast(v.constData()))); } return QSequentialIterable(v.value()); } }; template<> struct QVariantValueHelperInterface { static QAssociativeIterable invoke(const QVariant &v) { if (v.userType() == qMetaTypeId()) { return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast(v.constData()))); } if (v.userType() == qMetaTypeId()) { return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast(v.constData()))); } return QAssociativeIterable(v.value()); } }; template<> struct QVariantValueHelperInterface { static QVariantList invoke(const QVariant &v) { if (v.userType() == qMetaTypeId() || QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId())) { QSequentialIterable iter = QVariantValueHelperInterface::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::invoke(v); } }; template<> struct QVariantValueHelperInterface { static QVariantHash invoke(const QVariant &v) { if (QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId())) { QAssociativeIterable iter = QVariantValueHelperInterface::invoke(v); QVariantHash l; l.reserve(iter.size()); for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) l.insert(it.key().toString(), it.value()); return l; } return QVariantValueHelper::invoke(v); } }; template<> struct QVariantValueHelperInterface { static QVariantMap invoke(const QVariant &v) { if (QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId())) { QAssociativeIterable iter = QVariantValueHelperInterface::invoke(v); QVariantMap l; for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) l.insert(it.key().toString(), it.value()); return l; } return QVariantValueHelper::invoke(v); } }; template<> struct QVariantValueHelperInterface > { static QPair invoke(const QVariant &v) { if (v.userType() == qMetaTypeId >()) return QVariantValueHelper >::invoke(v); if (QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId())) { QtMetaTypePrivate::QPairVariantInterfaceImpl pi = v.value(); const QtMetaTypePrivate::VariantData d1 = pi.first(); QVariant v1(d1.metaTypeId, d1.data, d1.flags); if (d1.metaTypeId == qMetaTypeId()) v1 = *reinterpret_cast(d1.data); const QtMetaTypePrivate::VariantData d2 = pi.second(); QVariant v2(d2.metaTypeId, d2.data, d2.flags); if (d2.metaTypeId == qMetaTypeId()) v2 = *reinterpret_cast(d2.data); return QPair(v1, v2); } return QVariantValueHelper >::invoke(v); } }; } template inline T qvariant_cast(const QVariant &v) { return QtPrivate::QVariantValueHelperInterface::invoke(v); } template<> inline QVariant qvariant_cast(const QVariant &v) { if (v.userType() == QMetaType::QVariant) return *reinterpret_cast(v.constData()); return v; } # 829 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qvariant.h" template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QVariant)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QVariant) }; static inline const char *name() { return "QVariant"; } }; template < > inline void qSwap(QVariant &value1, QVariant &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QVariant>(::QVariant &value1, ::QVariant &value2) { value1 . swap(value2); } } __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &); __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant::Type); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 2 # 60 "../../include/QtQml/../../src/qml/qml/qqmlprivate.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qurl.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 52 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" 2 # 59 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" class QUrlQuery; class QUrlPrivate; class QDataStream; template class QUrlTwoFlags { int i; typedef int QUrlTwoFlags:: *Zero; public: constexpr inline QUrlTwoFlags(E1 f) : i(f) {} constexpr inline QUrlTwoFlags(E2 f) : i(f) {} constexpr inline QUrlTwoFlags(QFlag f) : i(f) {} constexpr inline QUrlTwoFlags(QFlags f) : i(f.operator int()) {} constexpr inline QUrlTwoFlags(QFlags f) : i(f.operator int()) {} constexpr inline QUrlTwoFlags(Zero = 0) : i(0) {} inline QUrlTwoFlags &operator&=(int mask) { i &= mask; return *this; } inline QUrlTwoFlags &operator&=(uint mask) { i &= mask; return *this; } inline QUrlTwoFlags &operator|=(QUrlTwoFlags f) { i |= f.i; return *this; } inline QUrlTwoFlags &operator|=(E1 f) { i |= f; return *this; } inline QUrlTwoFlags &operator|=(E2 f) { i |= f; return *this; } inline QUrlTwoFlags &operator^=(QUrlTwoFlags f) { i ^= f.i; return *this; } inline QUrlTwoFlags &operator^=(E1 f) { i ^= f; return *this; } inline QUrlTwoFlags &operator^=(E2 f) { i ^= f; return *this; } constexpr inline operator QFlags() const { return QFlag(i); } constexpr inline operator QFlags() const { return QFlag(i); } constexpr inline operator int() const { return i; } constexpr inline bool operator!() const { return !i; } constexpr inline QUrlTwoFlags operator|(QUrlTwoFlags f) const { return QUrlTwoFlags(QFlag(i | f.i)); } constexpr inline QUrlTwoFlags operator|(E1 f) const { return QUrlTwoFlags(QFlag(i | f)); } constexpr inline QUrlTwoFlags operator|(E2 f) const { return QUrlTwoFlags(QFlag(i | f)); } constexpr inline QUrlTwoFlags operator^(QUrlTwoFlags f) const { return QUrlTwoFlags(QFlag(i ^ f.i)); } constexpr inline QUrlTwoFlags operator^(E1 f) const { return QUrlTwoFlags(QFlag(i ^ f)); } constexpr inline QUrlTwoFlags operator^(E2 f) const { return QUrlTwoFlags(QFlag(i ^ f)); } constexpr inline QUrlTwoFlags operator&(int mask) const { return QUrlTwoFlags(QFlag(i & mask)); } constexpr inline QUrlTwoFlags operator&(uint mask) const { return QUrlTwoFlags(QFlag(i & mask)); } constexpr inline QUrlTwoFlags operator&(E1 f) const { return QUrlTwoFlags(QFlag(i & f)); } constexpr inline QUrlTwoFlags operator&(E2 f) const { return QUrlTwoFlags(QFlag(i & f)); } constexpr inline QUrlTwoFlags operator~() const { return QUrlTwoFlags(QFlag(~i)); } constexpr inline bool testFlag(E1 f) const { return (i & f) == f && (f != 0 || i == int(f)); } constexpr inline bool testFlag(E2 f) const { return (i & f) == f && (f != 0 || i == int(f)); } }; template class QTypeInfo > : public QTypeInfoMerger, E1, E2> {}; class QUrl; __attribute__((visibility("default"))) uint qHash(const QUrl &url, uint seed = 0) noexcept; class __attribute__((visibility("default"))) QUrl { public: enum ParsingMode { TolerantMode, StrictMode, DecodedMode }; enum UrlFormattingOption { None = 0x0, RemoveScheme = 0x1, RemovePassword = 0x2, RemoveUserInfo = RemovePassword | 0x4, RemovePort = 0x8, RemoveAuthority = RemoveUserInfo | RemovePort | 0x10, RemovePath = 0x20, RemoveQuery = 0x40, RemoveFragment = 0x80, PreferLocalFile = 0x200, StripTrailingSlash = 0x400, RemoveFilename = 0x800, NormalizePathSegments = 0x1000 }; enum ComponentFormattingOption { PrettyDecoded = 0x000000, EncodeSpaces = 0x100000, EncodeUnicode = 0x200000, EncodeDelimiters = 0x400000 | 0x800000, EncodeReserved = 0x1000000, DecodeReserved = 0x2000000, FullyEncoded = EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved, FullyDecoded = FullyEncoded | DecodeReserved | 0x4000000 }; typedef QFlags ComponentFormattingOptions; typedef QUrlTwoFlags FormattingOptions; QUrl(); QUrl(const QUrl ©); QUrl &operator =(const QUrl ©); explicit QUrl(const QString &url, ParsingMode mode = TolerantMode); QUrl(QUrl &&other) : d(0) { qSwap(d, other.d); } inline QUrl &operator=(QUrl &&other) { qSwap(d, other.d); return *this; } ~QUrl(); inline void swap(QUrl &other) { qSwap(d, other.d); } void setUrl(const QString &url, ParsingMode mode = TolerantMode); QString url(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; QString toString(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; QString toDisplayString(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; QUrl adjusted(FormattingOptions options) const; QByteArray toEncoded(FormattingOptions options = FullyEncoded) const; static QUrl fromEncoded(const QByteArray &url, ParsingMode mode = TolerantMode); static QUrl fromUserInput(const QString &userInput); bool isValid() const; QString errorString() const; bool isEmpty() const; void clear(); void setScheme(const QString &scheme); QString scheme() const; void setAuthority(const QString &authority, ParsingMode mode = TolerantMode); QString authority(ComponentFormattingOptions options = PrettyDecoded) const; void setUserInfo(const QString &userInfo, ParsingMode mode = TolerantMode); QString userInfo(ComponentFormattingOptions options = PrettyDecoded) const; void setUserName(const QString &userName, ParsingMode mode = DecodedMode); QString userName(ComponentFormattingOptions options = FullyDecoded) const; void setPassword(const QString &password, ParsingMode mode = DecodedMode); QString password(ComponentFormattingOptions = FullyDecoded) const; void setHost(const QString &host, ParsingMode mode = DecodedMode); QString host(ComponentFormattingOptions = FullyDecoded) const; QString topLevelDomain(ComponentFormattingOptions options = FullyDecoded) const; void setPort(int port); int port(int defaultPort = -1) const; void setPath(const QString &path, ParsingMode mode = DecodedMode); QString path(ComponentFormattingOptions options = FullyDecoded) const; QString fileName(ComponentFormattingOptions options = FullyDecoded) const; bool hasQuery() const; void setQuery(const QString &query, ParsingMode mode = TolerantMode); void setQuery(const QUrlQuery &query); QString query(ComponentFormattingOptions = PrettyDecoded) const; bool hasFragment() const; QString fragment(ComponentFormattingOptions options = PrettyDecoded) const; void setFragment(const QString &fragment, ParsingMode mode = TolerantMode); QUrl resolved(const QUrl &relative) const; bool isRelative() const; bool isParentOf(const QUrl &url) const; bool isLocalFile() const; static QUrl fromLocalFile(const QString &localfile); QString toLocalFile() const; void detach(); bool isDetached() const; bool operator <(const QUrl &url) const; bool operator ==(const QUrl &url) const; bool operator !=(const QUrl &url) const; bool matches(const QUrl &url, FormattingOptions options) const; static QString fromPercentEncoding(const QByteArray &); static QByteArray toPercentEncoding(const QString &, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()); # 275 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" # 342 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qurl.h" private: static QString fromEncodedComponent_helper(const QByteArray &ba); public: static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); static QStringList toStringList(const QList &uris, FormattingOptions options = FormattingOptions(PrettyDecoded)); static QList fromStringList(const QStringList &uris, ParsingMode mode = TolerantMode); static void setIdnWhitelist(const QStringList &); friend __attribute__((visibility("default"))) uint qHash(const QUrl &url, uint seed) noexcept; private: QUrlPrivate *d; friend class QUrlQuery; public: typedef QUrlPrivate * DataPtr; inline DataPtr &data_ptr() { return d; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QUrl)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QUrl) }; static inline const char *name() { return "QUrl"; } }; template < > inline void qSwap(QUrl &value1, QUrl &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QUrl>(::QUrl &value1, ::QUrl &value2) { value1 . swap(value2); } } constexpr inline QFlags operator|(QUrl::ComponentFormattingOptions::enum_type f1, QUrl::ComponentFormattingOptions::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QUrl::ComponentFormattingOptions::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QUrl::ComponentFormattingOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } constexpr inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption f1, QUrl::UrlFormattingOption f2) { return QUrl::FormattingOptions(f1) | f2; } constexpr inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption f1, QUrl::FormattingOptions f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QUrl::UrlFormattingOption f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } inline QUrl::FormattingOptions &operator|=(QUrl::FormattingOptions &i, QUrl::ComponentFormattingOptions f) { i |= QUrl::UrlFormattingOption(int(f)); return i; } constexpr inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption i, QUrl::ComponentFormattingOption f) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption i, QUrl::ComponentFormattingOptions f) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOption f, QUrl::UrlFormattingOption i) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOptions f, QUrl::UrlFormattingOption i) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::FormattingOptions i, QUrl::ComponentFormattingOptions f) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOption f, QUrl::FormattingOptions i) { return i | QUrl::UrlFormattingOption(int(f)); } constexpr inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOptions f, QUrl::FormattingOptions i) { return i | QUrl::UrlFormattingOption(int(f)); } __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QUrl &); __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QUrl &); __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QUrl &); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qurl.h" 2 # 61 "../../include/QtQml/../../src/qml/qml/qqmlprivate.h" 2 typedef QObject *(*QQmlAttachedPropertiesFunc)(QObject *); template class QQmlTypeInfo { public: enum { hasAttachedProperties = 0 }; }; class QJSValue; class QJSEngine; class QQmlEngine; class QQmlCustomParser; namespace QQmlPrivate { void __attribute__((visibility("default"))) qdeclarativeelement_destructor(QObject *); template class QQmlElement : public T { public: virtual ~QQmlElement() { QQmlPrivate::qdeclarativeelement_destructor(this); } }; template void createInto(void *memory) { new (memory) QQmlElement; } template QObject *createParent(QObject *p) { return new T(p); } template struct StaticCastSelectorClass { static inline int cast() { return -1; } }; template struct StaticCastSelectorClass { static inline int cast() { return int(reinterpret_cast(static_cast(reinterpret_cast(0x10000000)))) - 0x10000000; } }; template struct StaticCastSelector { typedef int yes_type; typedef char no_type; static yes_type check(To *); static no_type check(...); static inline int cast() { return StaticCastSelectorClass(0)))>::cast(); } }; template struct has_attachedPropertiesMember { static bool const value = QQmlTypeInfo::hasAttachedProperties; }; template class has_attachedPropertiesMethod { public: typedef int yes_type; typedef char no_type; template static yes_type check(ReturnType *(*)(QObject *)); static no_type check(...); static bool const value = sizeof(check(&T::qmlAttachedProperties)) == sizeof(yes_type); }; template class has_attachedPropertiesMethod { public: static bool const value = false; }; template class AttachedPropertySelector { public: static inline QQmlAttachedPropertiesFunc func() { return 0; } static inline const QMetaObject *metaObject() { return 0; } }; template class AttachedPropertySelector { static inline QObject *attachedProperties(QObject *obj) { return T::qmlAttachedProperties(obj); } template static inline const QMetaObject *attachedPropertiesMetaObject(ReturnType *(*)(QObject *)) { return &ReturnType::staticMetaObject; } public: static inline QQmlAttachedPropertiesFunc func() { return &attachedProperties; } static inline const QMetaObject *metaObject() { return attachedPropertiesMetaObject(&T::qmlAttachedProperties); } }; template inline QQmlAttachedPropertiesFunc attachedPropertiesFunc() { return AttachedPropertySelector::value>::value>::func(); } template inline const QMetaObject *attachedPropertiesMetaObject() { return AttachedPropertySelector::value>::value>::metaObject(); } enum AutoParentResult { Parented, IncompatibleObject, IncompatibleParent }; typedef AutoParentResult (*AutoParentFunction)(QObject *object, QObject *parent); struct RegisterType { int version; int typeId; int listId; int objectSize; void (*create)(void *); QString noCreationReason; const char *uri; int versionMajor; int versionMinor; const char *elementName; const QMetaObject *metaObject; QQmlAttachedPropertiesFunc attachedPropertiesFunction; const QMetaObject *attachedPropertiesMetaObject; int parserStatusCast; int valueSourceCast; int valueInterceptorCast; QObject *(*extensionObjectCreate)(QObject *); const QMetaObject *extensionMetaObject; QQmlCustomParser *customParser; int revision; }; struct RegisterInterface { int version; int typeId; int listId; const char *iid; }; struct RegisterAutoParent { int version; AutoParentFunction function; }; struct RegisterSingletonType { int version; const char *uri; int versionMajor; int versionMinor; const char *typeName; QJSValue (*scriptApi)(QQmlEngine *, QJSEngine *); QObject *(*qobjectApi)(QQmlEngine *, QJSEngine *); const QMetaObject *instanceMetaObject; int typeId; int revision; }; struct RegisterCompositeType { QUrl url; const char *uri; int versionMajor; int versionMinor; const char *typeName; }; struct RegisterCompositeSingletonType { QUrl url; const char *uri; int versionMajor; int versionMinor; const char *typeName; }; enum RegistrationType { TypeRegistration = 0, InterfaceRegistration = 1, AutoParentRegistration = 2, SingletonRegistration = 3, CompositeRegistration = 4, CompositeSingletonRegistration = 5 }; int __attribute__((visibility("default"))) qmlregister(RegistrationType, void *); } # 2 "../../include/QtQml/qqmlprivate.h" 2 # 46 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 # 1 "../../include/QtQml/qqmlparserstatus.h" 1 # 1 "../../include/QtQml/../../src/qml/qml/qqmlparserstatus.h" 1 # 1 "../../include/QtQml/qtqmlglobal.h" 1 # 46 "../../include/QtQml/../../src/qml/qml/qqmlparserstatus.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 47 "../../include/QtQml/../../src/qml/qml/qqmlparserstatus.h" 2 class __attribute__((visibility("default"))) QQmlParserStatus { public: QQmlParserStatus(); virtual ~QQmlParserStatus(); virtual void classBegin()=0; virtual void componentComplete()=0; private: friend class QQmlVME; friend class QQmlComponent; friend class QQmlComponentPrivate; friend class QQmlEnginePrivate; QQmlParserStatus **d; }; template < > inline const char *qobject_interface_iid() { return "org.qt-project.Qt.QQmlParserStatus"; } template < > inline QQmlParserStatus *qobject_cast(QObject *object) { return reinterpret_cast((object ? object->qt_metacast("org.qt-project.Qt.QQmlParserStatus") : 0)); } template < > inline QQmlParserStatus *qobject_cast(const QObject *object) { return reinterpret_cast((object ? const_cast(object)->qt_metacast("org.qt-project.Qt.QQmlParserStatus") : 0)); } # 2 "../../include/QtQml/qqmlparserstatus.h" 2 # 47 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 # 1 "../../include/QtQml/qqmlpropertyvaluesource.h" 1 # 1 "../../include/QtQml/../../src/qml/qml/qqmlpropertyvaluesource.h" 1 # 1 "../../include/QtQml/qtqmlglobal.h" 1 # 46 "../../include/QtQml/../../src/qml/qml/qqmlpropertyvaluesource.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 47 "../../include/QtQml/../../src/qml/qml/qqmlpropertyvaluesource.h" 2 class QQmlProperty; class __attribute__((visibility("default"))) QQmlPropertyValueSource { public: QQmlPropertyValueSource(); virtual ~QQmlPropertyValueSource(); virtual void setTarget(const QQmlProperty &) = 0; }; template < > inline const char *qobject_interface_iid() { return "org.qt-project.Qt.QQmlPropertyValueSource"; } template < > inline QQmlPropertyValueSource *qobject_cast(QObject *object) { return reinterpret_cast((object ? object->qt_metacast("org.qt-project.Qt.QQmlPropertyValueSource") : 0)); } template < > inline QQmlPropertyValueSource *qobject_cast(const QObject *object) { return reinterpret_cast((object ? const_cast(object)->qt_metacast("org.qt-project.Qt.QQmlPropertyValueSource") : 0)); } # 2 "../../include/QtQml/qqmlpropertyvaluesource.h" 2 # 48 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 # 1 "../../include/QtQml/qqmllist.h" 1 # 1 "../../include/QtQml/../../src/qml/qml/qqmllist.h" 1 # 1 "../../include/QtQml/qtqmlglobal.h" 1 # 46 "../../include/QtQml/../../src/qml/qml/qqmllist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 47 "../../include/QtQml/../../src/qml/qml/qqmllist.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 48 "../../include/QtQml/../../src/qml/qml/qqmllist.h" 2 class QObject; struct QMetaObject; template class QQmlListProperty { public: typedef void (*AppendFunction)(QQmlListProperty *, T*); typedef int (*CountFunction)(QQmlListProperty *); typedef T *(*AtFunction)(QQmlListProperty *, int); typedef void (*ClearFunction)(QQmlListProperty *); QQmlListProperty() : object(0), data(0), append(0), count(0), at(0), clear(0), dummy1(0), dummy2(0) {} QQmlListProperty(QObject *o, QList &list) : object(o), data(&list), append(qlist_append), count(qlist_count), at(qlist_at), clear(qlist_clear), dummy1(0), dummy2(0) {} QQmlListProperty(QObject *o, void *d, AppendFunction a, CountFunction c, AtFunction t, ClearFunction r ) : object(o), data(d), append(a), count(c), at(t), clear(r), dummy1(0), dummy2(0) {} QQmlListProperty(QObject *o, void *d, CountFunction c, AtFunction t) : object(o), data(d), append(0), count(c), at(t), clear(0), dummy1(0), dummy2(0) {} bool operator==(const QQmlListProperty &o) const { return object == o.object && data == o.data && append == o.append && count == o.count && at == o.at && clear == o.clear; } QObject *object; void *data; AppendFunction append; CountFunction count; AtFunction at; ClearFunction clear; void *dummy1; void *dummy2; private: static void qlist_append(QQmlListProperty *p, T *v) { reinterpret_cast *>(p->data)->append(v); } static int qlist_count(QQmlListProperty *p) { return reinterpret_cast *>(p->data)->count(); } static T *qlist_at(QQmlListProperty *p, int idx) { return reinterpret_cast *>(p->data)->at(idx); } static void qlist_clear(QQmlListProperty *p) { return reinterpret_cast *>(p->data)->clear(); } }; class QQmlEngine; class QQmlListReferencePrivate; class __attribute__((visibility("default"))) QQmlListReference { public: QQmlListReference(); QQmlListReference(QObject *, const char *property, QQmlEngine * = 0); QQmlListReference(const QQmlListReference &); QQmlListReference &operator=(const QQmlListReference &); ~QQmlListReference(); bool isValid() const; QObject *object() const; const QMetaObject *listElementType() const; bool canAppend() const; bool canAt() const; bool canClear() const; bool canCount() const; bool isManipulable() const; bool isReadable() const; bool append(QObject *) const; QObject *at(int) const; bool clear() const; int count() const; private: friend class QQmlListReferencePrivate; QQmlListReferencePrivate* d; }; template < > struct QMetaTypeId< QQmlListReference > { 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< QQmlListReference >("QQmlListReference", reinterpret_cast< QQmlListReference * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; # 2 "../../include/QtQml/qqmllist.h" 2 # 49 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 51 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetaobject.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetaobject.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetaobject.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetaobject.h" 2 template class QList; class __attribute__((visibility("default"))) QMetaMethod { public: inline QMetaMethod() : mobj(0),handle(0) {} QByteArray methodSignature() const; QByteArray name() const; const char *typeName() const; int returnType() const; int parameterCount() const; int parameterType(int index) const; void getParameterTypes(int *types) const; QList parameterTypes() const; QList parameterNames() const; const char *tag() const; enum Access { Private, Protected, Public }; Access access() const; enum MethodType { Method, Signal, Slot, Constructor }; MethodType methodType() const; enum Attributes { Compatibility = 0x1, Cloned = 0x2, Scriptable = 0x4 }; int attributes() const; int methodIndex() const; int revision() const; inline const QMetaObject *enclosingMetaObject() const { return mobj; } bool invoke(QObject *object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue, QGenericArgument val0 = QGenericArgument(0), 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; inline bool invoke(QObject *object, QGenericReturnArgument returnValue, QGenericArgument val0 = QGenericArgument(0), 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 { return invoke(object, Qt::AutoConnection, returnValue, val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } inline bool invoke(QObject *object, Qt::ConnectionType connectionType, QGenericArgument val0 = QGenericArgument(0), 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 { return invoke(object, connectionType, QGenericReturnArgument(), val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } inline bool invoke(QObject *object, QGenericArgument val0 = QGenericArgument(0), 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 { return invoke(object, Qt::AutoConnection, QGenericReturnArgument(), val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } inline bool isValid() const { return mobj != 0; } template static inline QMetaMethod fromSignal(Func signal) { typedef QtPrivate::FunctionPointer SignalType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "No Q_OBJECT in the class with the signal"); return fromSignalImpl(&SignalType::Object::staticMetaObject, reinterpret_cast(&signal)); } private: # 165 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qmetaobject.h" static QMetaMethod fromSignalImpl(const QMetaObject *, void **); const QMetaObject *mobj; uint handle; friend class QMetaMethodPrivate; friend struct QMetaObject; friend struct QMetaObjectPrivate; friend class QObject; friend bool operator==(const QMetaMethod &m1, const QMetaMethod &m2); friend bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2); }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QMetaMethod)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QMetaMethod) }; static inline const char *name() { return "QMetaMethod"; } }; inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2) { return m1.mobj == m2.mobj && m1.handle == m2.handle; } inline bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2) { return !(m1 == m2); } class __attribute__((visibility("default"))) QMetaEnum { public: inline QMetaEnum() : mobj(0),handle(0) {} const char *name() const; bool isFlag() const; int keyCount() const; const char *key(int index) const; int value(int index) const; const char *scope() const; int keyToValue(const char *key, bool *ok = 0) const; const char* valueToKey(int value) const; int keysToValue(const char * keys, bool *ok = 0) const; QByteArray valueToKeys(int value) const; inline const QMetaObject *enclosingMetaObject() const { return mobj; } inline bool isValid() const { return name() != 0; } private: const QMetaObject *mobj; uint handle; friend struct QMetaObject; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QMetaEnum)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QMetaEnum) }; static inline const char *name() { return "QMetaEnum"; } }; class __attribute__((visibility("default"))) QMetaProperty { public: QMetaProperty(); const char *name() const; const char *typeName() const; QVariant::Type type() const; int userType() const; int propertyIndex() const; bool isReadable() const; bool isWritable() const; bool isResettable() const; bool isDesignable(const QObject *obj = 0) const; bool isScriptable(const QObject *obj = 0) const; bool isStored(const QObject *obj = 0) const; bool isEditable(const QObject *obj = 0) const; bool isUser(const QObject *obj = 0) const; bool isConstant() const; bool isFinal() const; bool isFlagType() const; bool isEnumType() const; QMetaEnum enumerator() const; bool hasNotifySignal() const; QMetaMethod notifySignal() const; int notifySignalIndex() const; int revision() const; QVariant read(const QObject *obj) const; bool write(QObject *obj, const QVariant &value) const; bool reset(QObject *obj) const; bool hasStdCppSet() const; inline bool isValid() const { return isReadable(); } inline const QMetaObject *enclosingMetaObject() const { return mobj; } private: const QMetaObject *mobj; uint handle; int idx; QMetaEnum menum; friend struct QMetaObject; friend struct QMetaObjectPrivate; }; class __attribute__((visibility("default"))) QMetaClassInfo { public: inline QMetaClassInfo() : mobj(0),handle(0) {} const char *name() const; const char *value() const; inline const QMetaObject *enclosingMetaObject() const { return mobj; } private: const QMetaObject *mobj; uint handle; friend struct QMetaObject; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QMetaClassInfo)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QMetaClassInfo) }; static inline const char *name() { return "QMetaClassInfo"; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetaobject.h" 2 # 52 "../../include/QtQml/../../src/qml/qml/qqml.h" 2 enum { QML_HAS_ATTACHED_PROPERTIES = 0x01 }; # 84 "../../include/QtQml/../../src/qml/qml/qqml.h" class QQmlPropertyValueInterceptor; # 103 "../../include/QtQml/../../src/qml/qml/qqml.h" void __attribute__((visibility("default"))) qmlClearTypeRegistrations(); template int qmlRegisterType() { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), 0, 0, QString(), 0, 0, 0, 0, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } int __attribute__((visibility("default"))) qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString& message); template int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString& reason) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), 0, 0, reason, uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString& reason) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 1, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), 0, 0, reason, uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, metaObjectRevision }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), sizeof(T), QQmlPrivate::createInto, QString(), uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 1, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), sizeof(T), QQmlPrivate::createInto, QString(), uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, metaObjectRevision }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 1, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), sizeof(T), QQmlPrivate::createInto, QString(), uri, versionMajor, versionMinor, 0, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, 0, metaObjectRevision }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterExtendedType() { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), 0, 0, QString(), 0, 0, 0, 0, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::createParent, &E::staticMetaObject, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterExtendedType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlAttachedPropertiesFunc attached = QQmlPrivate::attachedPropertiesFunc(); const QMetaObject * attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); if (!attached) { attached = QQmlPrivate::attachedPropertiesFunc(); attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); } QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), sizeof(T), QQmlPrivate::createInto, QString(), uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, attached, attachedMetaObject, QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::createParent, &E::staticMetaObject, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } template int qmlRegisterInterface(const char *typeName) { QByteArray name(typeName); QByteArray pointerName(name + '*'); QByteArray listName("QQmlListProperty<" + name + '>'); QQmlPrivate::RegisterInterface qmlInterface = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), qobject_interface_iid() }; return QQmlPrivate::qmlregister(QQmlPrivate::InterfaceRegistration, &qmlInterface); } template int qmlRegisterCustomType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, QQmlCustomParser *parser) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterType type = { 0, qRegisterNormalizedMetaType(pointerName.constData()), qRegisterNormalizedMetaType >(listName.constData()), sizeof(T), QQmlPrivate::createInto, QString(), uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject, QQmlPrivate::attachedPropertiesFunc(), QQmlPrivate::attachedPropertiesMetaObject(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), QQmlPrivate::StaticCastSelector::cast(), 0, 0, parser, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type); } class QQmlContext; class QQmlEngine; class QJSValue; class QJSEngine; namespace QtQml { __attribute__((visibility("default"))) void qmlExecuteDeferred(QObject *); __attribute__((visibility("default"))) QQmlContext *qmlContext(const QObject *); __attribute__((visibility("default"))) QQmlEngine *qmlEngine(const QObject *); __attribute__((visibility("default"))) QObject *qmlAttachedPropertiesObjectById(int, const QObject *, bool create = true); __attribute__((visibility("default"))) QObject *qmlAttachedPropertiesObject(int *, const QObject *, const QMetaObject *, bool create); } using namespace QtQml; __attribute__((visibility("default"))) bool qmlProtectModule(const char* uri, int majVersion); template QObject *qmlAttachedPropertiesObject(const QObject *obj, bool create = true) { static int idx = -1; return qmlAttachedPropertiesObject(&idx, obj, &T::staticMetaObject, create); } __attribute__((visibility("default"))) void qmlRegisterBaseTypes(const char *uri, int versionMajor, int versionMinor); inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QJSValue (*callback)(QQmlEngine *, QJSEngine *)) { QQmlPrivate::RegisterSingletonType api = { 0, uri, versionMajor, versionMinor, typeName, callback, 0, 0, 0, 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, &api); } static const int CurrentSingletonTypeRegistrationVersion = 2; template inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QObject *(*callback)(QQmlEngine *, QJSEngine *)) { const char *className = T::staticMetaObject . className(); const int nameLen = int(strlen(className)); QVarLengthArray pointerName(nameLen+2); memcpy(pointerName . data(), className, nameLen); pointerName[nameLen] = '*'; pointerName[nameLen+1] = '\0'; const int listLen = int(strlen("QQmlListProperty<")); QVarLengthArray listName(listLen + nameLen + 2); memcpy(listName . data(), "QQmlListProperty<", listLen); memcpy(listName . data()+listLen, className, nameLen); listName[listLen+nameLen] = '>'; listName[listLen+nameLen+1] = '\0'; QQmlPrivate::RegisterSingletonType api = { CurrentSingletonTypeRegistrationVersion, uri, versionMajor, versionMinor, typeName, 0, callback, &T::staticMetaObject, qRegisterNormalizedMetaType(pointerName.constData()), 0 }; return QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, &api); } inline int qmlRegisterSingletonType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName) { if (url.isRelative()) { QMessageLogger("../../include/QtQml/../../src/qml/qml/qqml.h", 492, __PRETTY_FUNCTION__). warning("qmlRegisterSingletonType requires absolute URLs."); return 0; } QQmlPrivate::RegisterCompositeSingletonType type = { url, uri, versionMajor, versionMinor, qmlName }; return QQmlPrivate::qmlregister(QQmlPrivate::CompositeSingletonRegistration, &type); } inline int qmlRegisterType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName) { if (url.isRelative()) { QMessageLogger("../../include/QtQml/../../src/qml/qml/qqml.h", 511, __PRETTY_FUNCTION__). warning("qmlRegisterType requires absolute URLs."); return 0; } QQmlPrivate::RegisterCompositeType type = { url, uri, versionMajor, versionMinor, qmlName }; return QQmlPrivate::qmlregister(QQmlPrivate::CompositeRegistration, &type); } template < > struct QMetaTypeId< QObject * > { 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< QObject * >("QObject *", reinterpret_cast< QObject * * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template < > struct QMetaTypeId< QQmlListProperty > { 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< QQmlListProperty >("QQmlListProperty", reinterpret_cast< QQmlListProperty * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; template < > struct QMetaTypeId< QVariant > { 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< QVariant >("QVariant", reinterpret_cast< QVariant * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; # 2 "../../include/QtQml/qqml.h" 2 # 46 ".moc/../qml/qqmllocale_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlocale.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlocale.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlocale.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlocale.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlocale.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qshareddata.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qshareddata.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qshareddata.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qshareddata.h" 2 template 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 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 &other) const { return d == other.d; } inline bool operator!=(const QSharedDataPointer &other) const { return d != other.d; } inline QSharedDataPointer() { d = 0; } inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; } explicit QSharedDataPointer(T *data); inline QSharedDataPointer(const QSharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } inline QSharedDataPointer & operator=(const QSharedDataPointer &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) : d(o.d) { o.d = 0; } inline QSharedDataPointer &operator=(QSharedDataPointer &&other) { qSwap(d, other.d); return *this; } inline bool operator!() const { return !d; } inline void swap(QSharedDataPointer &other) { qSwap(d, other.d); } protected: T *clone(); private: void detach_helper(); T *d; }; template 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 = 0; } inline operator bool () const { return d != 0; } inline bool operator==(const QExplicitlySharedDataPointer &other) const { return d == other.d; } inline bool operator!=(const QExplicitlySharedDataPointer &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 = 0; } inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; } explicit QExplicitlySharedDataPointer(T *data); inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } template inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) : d(static_cast(o.data())) { if(d) d->ref.ref(); } inline QExplicitlySharedDataPointer & operator=(const QExplicitlySharedDataPointer &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) : d(o.d) { o.d = 0; } inline QExplicitlySharedDataPointer &operator=(QExplicitlySharedDataPointer &&other) { qSwap(d, other.d); return *this; } inline bool operator!() const { return !d; } inline void swap(QExplicitlySharedDataPointer &other) { qSwap(d, other.d); } protected: T *clone(); private: void detach_helper(); T *d; }; template inline QSharedDataPointer::QSharedDataPointer(T *adata) : d(adata) { if (d) d->ref.ref(); } template inline T *QSharedDataPointer::clone() { return new T(*d); } template void QSharedDataPointer::detach_helper() { T *x = clone(); x->ref.ref(); if (!d->ref.deref()) delete d; d = x; } template inline T *QExplicitlySharedDataPointer::clone() { return new T(*d); } template void QExplicitlySharedDataPointer::detach_helper() { T *x = clone(); x->ref.ref(); if (!d->ref.deref()) delete d; d = x; } template inline QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(T *adata) : d(adata) { if (d) d->ref.ref(); } template inline void qSwap(QSharedDataPointer &p1, QSharedDataPointer &p2) { p1.swap(p2); } template inline void qSwap(QExplicitlySharedDataPointer &p1, QExplicitlySharedDataPointer &p2) { p1.swap(p2); } namespace std { template inline void swap(::QSharedDataPointer &p1, ::QSharedDataPointer &p2) { p1.swap(p2); } template inline void swap(::QExplicitlySharedDataPointer &p1, ::QExplicitlySharedDataPointer &p2) { p1.swap(p2); } } template class QTypeInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSharedDataPointer)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QSharedDataPointer) }; static inline const char *name() { return "QSharedDataPointer"; } }; template class QTypeInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QExplicitlySharedDataPointer)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QExplicitlySharedDataPointer) }; static inline const char *name() { return "QExplicitlySharedDataPointer"; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qshareddata.h" 2 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qlocale.h" 2 class QDataStream; class QDate; class QDateTime; class QTime; class QVariant; class QTextStream; class QTextStreamPrivate; class QLocalePrivate; class __attribute__((visibility("default"))) QLocale { public: static const QMetaObject staticMetaObject; private: 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, 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 = Ugaritic }; 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, SimplifiedChineseScript = SimplifiedHanScript, TraditionalChineseScript = TraditionalHanScript, LastScript = HiraganaScript }; 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, Tokelau = 213, Tonga = 214, TrinidadAndTobago = 215, Tunisia = 216, Turkey = 217, Turkmenistan = 218, TurksAndCaicosIslands = 219, Tuvalu = 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, DemocraticRepublicOfCongo = CongoKinshasa, PeoplesRepublicOfCongo = CongoBrazzaville, DemocraticRepublicOfKorea = NorthKorea, RepublicOfKorea = SouthKorea, RussianFederation = Russia, SyrianArabRepublic = Syria, LastCountry = Kosovo }; enum MeasurementSystem { MetricSystem, ImperialUSSystem, ImperialUKSystem, ImperialSystem = ImperialUSSystem }; enum FormatType { LongFormat, ShortFormat, NarrowFormat }; enum NumberOption { OmitGroupSeparator = 0x01, RejectGroupSeparator = 0x02 }; typedef QFlags NumberOptions; 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(); QLocale &operator=(const QLocale &other); 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 = 0) const; ushort toUShort(const QString &s, bool *ok = 0) const; int toInt(const QString &s, bool *ok = 0) const; uint toUInt(const QString &s, bool *ok = 0) const; qlonglong toLongLong(const QString &s, bool *ok = 0) const; qulonglong toULongLong(const QString &s, bool *ok = 0) const; float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; short toShort(const QStringRef &s, bool *ok = 0) const; ushort toUShort(const QStringRef &s, bool *ok = 0) const; int toInt(const QStringRef &s, bool *ok = 0) const; uint toUInt(const QStringRef &s, bool *ok = 0) const; qlonglong toLongLong(const QStringRef &s, bool *ok = 0) const; qulonglong toULongLong(const QStringRef &s, bool *ok = 0) const; float toFloat(const QStringRef &s, bool *ok = 0) const; double toDouble(const QStringRef &s, bool *ok = 0) 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 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; inline QString toCurrencyString(float, const QString &symbol = QString()) const; 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 matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); static QList 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; QSharedDataPointer d; }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLocale)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QLocale) }; static inline const char *name() { return "QLocale"; } }; constexpr inline QFlags operator|(QLocale::NumberOptions::enum_type f1, QLocale::NumberOptions::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QLocale::NumberOptions::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QLocale::NumberOptions::enum_type f1, int f2) { 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); } inline QString QLocale::toCurrencyString(float i, const QString &symbol) const { return toCurrencyString(double(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 &); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlocale.h" 2 # 48 ".moc/../qml/qqmllocale_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 49 ".moc/../qml/qqmllocale_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv8engine_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qset.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qset.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qset.h" 2 template class QSet { typedef QHash Hash; public: inline QSet() {} inline QSet(std::initializer_list list) { reserve(list.size()); for (typename std::initializer_list::const_iterator it = list.begin(); it != list.end(); ++it) insert(*it); } inline QSet(const QSet &other) : q_hash(other.q_hash) {} inline QSet &operator=(const QSet &other) { q_hash = other.q_hash; return *this; } inline QSet(QSet &&other) : q_hash(std::move(other . q_hash)) {} inline QSet &operator=(QSet &&other) { qSwap(q_hash, other.q_hash); return *this; } inline void swap(QSet &other) { q_hash.swap(other.q_hash); } inline bool operator==(const QSet &other) const { return q_hash == other.q_hash; } inline bool operator!=(const QSet &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 &set) const; class const_iterator; class iterator { typedef QHash Hash; typename Hash::iterator i; friend class const_iterator; 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 Hash; typename Hash::const_iterator i; friend class iterator; 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; } }; inline iterator begin() { return q_hash.begin(); } inline const_iterator begin() const { return q_hash.begin(); } inline const_iterator cbegin() const { return q_hash.begin(); } inline const_iterator constBegin() const { return q_hash.constBegin(); } inline iterator end() { return q_hash.end(); } inline const_iterator end() const { return q_hash.end(); } inline const_iterator cend() const { return q_hash.end(); } inline const_iterator constEnd() const { return q_hash.constEnd(); } iterator erase(iterator i) { ((!(isValidIterator(i))) ? qt_assert_x("QSet::erase", "The specified const_iterator argument 'i' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qset.h",185) : qt_noop()); return q_hash.erase(reinterpret_cast(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(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 &unite(const QSet &other); QSet &intersect(const QSet &other); QSet &subtract(const QSet &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 &operator<<(const T &value) { insert(value); return *this; } inline QSet &operator|=(const QSet &other) { unite(other); return *this; } inline QSet &operator|=(const T &value) { insert(value); return *this; } inline QSet &operator&=(const QSet &other) { intersect(other); return *this; } inline QSet &operator&=(const T &value) { QSet result; if (contains(value)) result.insert(value); return (*this = result); } inline QSet &operator+=(const QSet &other) { unite(other); return *this; } inline QSet &operator+=(const T &value) { insert(value); return *this; } inline QSet &operator-=(const QSet &other) { subtract(other); return *this; } inline QSet &operator-=(const T &value) { remove(value); return *this; } inline QSet operator|(const QSet &other) const { QSet result = *this; result |= other; return result; } inline QSet operator&(const QSet &other) const { QSet result = *this; result &= other; return result; } inline QSet operator+(const QSet &other) const { QSet result = *this; result += other; return result; } inline QSet operator-(const QSet &other) const { QSet result = *this; result -= other; return result; } QList toList() const; inline QList values() const { return toList(); } static QSet fromList(const QList &list); private: Hash q_hash; bool isValidIterator(const iterator &i) const { return q_hash.isValidIterator(reinterpret_cast(i)); } }; template inline void QSet::reserve(int asize) { q_hash.reserve(asize); } template inline QSet &QSet::unite(const QSet &other) { QSet copy(other); typename QSet::const_iterator i = copy.constEnd(); while (i != copy.constBegin()) { --i; insert(*i); } return *this; } template inline QSet &QSet::intersect(const QSet &other) { QSet copy1; QSet copy2; if (size() <= other.size()) { copy1 = *this; copy2 = other; } else { copy1 = other; copy2 = *this; *this = copy1; } typename QSet::const_iterator i = copy1.constEnd(); while (i != copy1.constBegin()) { --i; if (!copy2.contains(*i)) remove(*i); } return *this; } template inline QSet &QSet::subtract(const QSet &other) { QSet copy1(*this); QSet copy2(other); typename QSet::const_iterator i = copy1.constEnd(); while (i != copy1.constBegin()) { --i; if (copy2.contains(*i)) remove(*i); } return *this; } template inline bool QSet::contains(const QSet &other) const { typename QSet::const_iterator i = other.constBegin(); while (i != other.constEnd()) { if (!contains(*i)) return false; ++i; } return true; } template QList QSet::toList() const { QList result; result.reserve(size()); typename QSet::const_iterator i = constBegin(); while (i != constEnd()) { result.append(*i); ++i; } return result; } template QSet QList::toSet() const { QSet result; result.reserve(size()); for (int i = 0; i < size(); ++i) result.insert(at(i)); return result; } template QSet QSet::fromList(const QList &list) { return list.toSet(); } template QList QList::fromSet(const QSet &set) { return set.toList(); } template class QSetIterator { typedef typename QSet ::const_iterator const_iterator; QSet c; const_iterator i; public: inline QSetIterator(const QSet &container) : c(container), i(c . constBegin()) {} inline QSetIterator &operator=(const QSet &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 QMutableSetIterator { typedef typename QSet::iterator iterator; QSet *c; iterator i, n; inline bool item_exists() const { return c->constEnd() != n; } public: inline QMutableSetIterator(QSet &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableSetIterator() { c->setSharable(true); } inline QMutableSetIterator &operator=(QSet &container) { c->setSharable(true); c = &container; c->setSharable(false); 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 { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qset.h",373) : qt_noop()); 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; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qset.h" 2 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmutex.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h" 2 class QMutexData; class __attribute__((visibility("default"))) QBasicMutex { public: inline void lock() noexcept { if (!fastTryLock()) lockInternal(); } inline void unlock() noexcept { ((!(d_ptr . load())) ? qt_assert("d_ptr.load()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h",71) : qt_noop()); if (!fastTryUnlock()) unlockInternal(); } bool tryLock() noexcept { return fastTryLock(); } bool isRecursive(); private: inline bool fastTryLock() noexcept { return d_ptr.testAndSetAcquire(0, dummyLocked()); } inline bool fastTryUnlock() noexcept { return d_ptr.testAndSetRelease(dummyLocked(), 0); } void lockInternal() noexcept; bool lockInternal(int timeout) noexcept; void unlockInternal() noexcept; QBasicAtomicPointer d_ptr; static inline QMutexData *dummyLocked() { return reinterpret_cast(quintptr(1)); } friend class QMutex; friend class QMutexData; }; class __attribute__((visibility("default"))) QMutex : public QBasicMutex { public: enum RecursionMode { NonRecursive, Recursive }; explicit QMutex(RecursionMode mode = NonRecursive); ~QMutex(); void lock() noexcept; bool tryLock(int timeout = 0) noexcept; void unlock() noexcept; using QBasicMutex::isRecursive; private: QMutex(const QMutex &) = delete; QMutex &operator=(const QMutex &) = delete; friend class QMutexLocker; }; class __attribute__((visibility("default"))) QMutexLocker { public: inline explicit QMutexLocker(QBasicMutex *m) noexcept { ((!((reinterpret_cast(m) & quintptr(1u)) == quintptr(0))) ? qt_assert_x("QMutexLocker", "QMutex pointer is misaligned","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h",126) : qt_noop()); val = quintptr(m); if (__builtin_expect(! !(m), true)) { static_cast(m)->lock(); val |= 1; } } inline ~QMutexLocker() { unlock(); } inline void unlock() noexcept { if ((val & quintptr(1u)) == quintptr(1u)) { val &= ~quintptr(1u); mutex()->unlock(); } } inline void relock() noexcept { if (val) { if ((val & quintptr(1u)) == quintptr(0u)) { mutex()->lock(); val |= quintptr(1u); } } } inline QMutex *mutex() const { return reinterpret_cast(val & ~quintptr(1u)); } private: QMutexLocker(const QMutexLocker &) = delete; QMutexLocker &operator=(const QMutexLocker &) = delete; quintptr val; }; # 209 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmutex.h" 2 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstack.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstack.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiterator.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qrefcount.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qarraydata.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 2 # 58 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" class QRegion; template class QVector { typedef QTypedArrayData Data; Data *d; public: inline QVector() : d(Data::sharedNull()) { } explicit QVector(int size); QVector(int size, const T &t); inline QVector(const QVector &v); inline ~QVector() { if (!d->ref.deref()) freeData(d); } QVector &operator=(const QVector &v); inline QVector(QVector &&other) : d(other.d) { other.d = Data::sharedNull(); } inline QVector operator=(QVector &&other) { qSwap(d, other.d); return *this; } inline void swap(QVector &other) { qSwap(d, other.d); } inline QVector(std::initializer_list args); bool operator==(const QVector &v) const; inline bool operator!=(const QVector &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); } ((!(d->ref . isSharable() == sharable)) ? qt_assert("d->ref.isSharable() == sharable","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",123) : qt_noop()); } inline bool isSharedWith(const QVector &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 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() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",143) : qt_noop()); erase(d->begin()); } inline void removeLast(); inline T takeFirst() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",145) : qt_noop()); T r = first(); removeFirst(); return r; } inline T takeLast() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",146) : qt_noop()); T r = last(); removeLast(); return r; } QVector &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 length() const { return size(); } T takeAt(int i) { T t = at(i); remove(i); return t; } typedef typename Data::iterator iterator; typedef typename Data::const_iterator const_iterator; inline iterator begin() { detach(); return d->begin(); } inline const_iterator begin() const { return d->constBegin(); } inline const_iterator cbegin() const { return d->constBegin(); } inline const_iterator constBegin() const { return d->constBegin(); } inline iterator end() { detach(); return d->end(); } inline const_iterator end() const { return d->constEnd(); } inline const_iterator cend() const { return d->constEnd(); } inline const_iterator constEnd() const { return d->constEnd(); } # 182 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" 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() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",189) : qt_noop()); return *begin(); } inline const T &first() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",190) : qt_noop()); return *begin(); } inline T& last() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",191) : qt_noop()); return *(end()-1); } inline const T &last() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",192) : qt_noop()); 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 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); } 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 &operator+=(const QVector &l); inline QVector operator+(const QVector &l) const { QVector n = *this; n += l; return n; } inline QVector &operator+=(const T &t) { append(t); return *this; } inline QVector &operator<< (const T &t) { append(t); return *this; } inline QVector &operator<<(const QVector &l) { *this += l; return *this; } QList toList() const; static QVector fromList(const QList &list); static inline QVector fromStdVector(const std::vector &vector) { QVector tmp; tmp.reserve(int(vector.size())); std::copy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; } inline std::vector toStdVector() const { std::vector tmp; tmp.reserve(size()); std::copy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } 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]; }; }; template void QVector::defaultConstruct(T *from, T *to) { if (QTypeInfo::isComplex) { while (from != to) { new (from++) T(); } } else { ::memset(static_cast(from), 0, (to - from) * sizeof(T)); } } template void QVector::copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom) { if (QTypeInfo::isComplex) { while (srcFrom != srcTo) new (dstFrom++) T(*srcFrom++); } else { ::memcpy(static_cast(dstFrom), static_cast(srcFrom), (srcTo - srcFrom) * sizeof(T)); } } template void QVector::destruct(T *from, T *to) { if (QTypeInfo::isComplex) { while (from != to) { from++->~T(); } } } template inline QVector::QVector(const QVector &v) { if (v.d->ref.ref()) { d = v.d; } else { if (v.d->capacityReserved) { d = Data::allocate(v.d->alloc); d->capacityReserved = true; } else { d = Data::allocate(v.d->size); } if (d->alloc) { copyConstruct(v.d->begin(), v.d->end(), d->begin()); d->size = v.d->size; } } } template void QVector::detach() { if (!isDetached()) { if (d->alloc) reallocData(d->size, int(d->alloc)); else d = Data::unsharableEmpty(); } ((!(isDetached())) ? qt_assert("isDetached()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",325) : qt_noop()); } template void QVector::reserve(int asize) { if (asize > int(d->alloc)) reallocData(d->size, asize); if (isDetached()) d->capacityReserved = 1; ((!(capacity() >= asize)) ? qt_assert("capacity() >= asize","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",335) : qt_noop()); } template void QVector::resize(int asize) { int newAlloc; const int oldAlloc = int(d->alloc); QArrayData::AllocationOptions opt; if (asize > oldAlloc) { newAlloc = asize; opt = QArrayData::Grow; } else if (!d->capacityReserved && asize < d->size && asize < (oldAlloc >> 1)) { newAlloc = asize; opt = QArrayData::Grow; } else { newAlloc = oldAlloc; } reallocData(asize, newAlloc, opt); } template inline void QVector::clear() { *this = QVector(); } template inline const T &QVector::at(int i) const { ((!(i >= 0 && i < d->size)) ? qt_assert_x("QVector::at", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",361) : qt_noop()); return d->begin()[i]; } template inline const T &QVector::operator[](int i) const { ((!(i >= 0 && i < d->size)) ? qt_assert_x("QVector::operator[]", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",365) : qt_noop()); return d->begin()[i]; } template inline T &QVector::operator[](int i) { ((!(i >= 0 && i < d->size)) ? qt_assert_x("QVector::operator[]", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",369) : qt_noop()); return data()[i]; } template inline void QVector::insert(int i, const T &t) { ((!(i >= 0 && i <= d->size)) ? qt_assert_x("QVector::insert", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",373) : qt_noop()); insert(begin() + i, 1, t); } template inline void QVector::insert(int i, int n, const T &t) { ((!(i >= 0 && i <= d->size)) ? qt_assert_x("QVector::insert", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",377) : qt_noop()); insert(begin() + i, n, t); } template inline void QVector::remove(int i, int n) { ((!(i >= 0 && n >= 0 && i + n <= d->size)) ? qt_assert_x("QVector::remove", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",381) : qt_noop()); erase(d->begin() + i, d->begin() + i + n); } template inline void QVector::remove(int i) { ((!(i >= 0 && i < d->size)) ? qt_assert_x("QVector::remove", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",385) : qt_noop()); erase(d->begin() + i, d->begin() + i + 1); } template inline void QVector::prepend(const T &t) { insert(begin(), 1, t); } template inline void QVector::replace(int i, const T &t) { ((!(i >= 0 && i < d->size)) ? qt_assert_x("QVector::replace", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",394) : qt_noop()); const T copy(t); data()[i] = copy; } template QVector &QVector::operator=(const QVector &v) { if (v.d != d) { QVector tmp(v); tmp.swap(*this); } return *this; } template QVector::QVector(int asize) { ((!(asize >= 0)) ? qt_assert_x("QVector::QVector", "Size must be greater than or equal to 0.","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",412) : qt_noop()); if (__builtin_expect(! !(asize > 0), true)) { d = Data::allocate(asize); d->size = asize; defaultConstruct(d->begin(), d->end()); } else { d = Data::sharedNull(); } } template QVector::QVector(int asize, const T &t) { ((!(asize >= 0)) ? qt_assert_x("QVector::QVector", "Size must be greater than or equal to 0.","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",425) : qt_noop()); if (asize > 0) { d = Data::allocate(asize); d->size = asize; T* i = d->end(); while (i != d->begin()) new (--i) T(t); } else { d = Data::sharedNull(); } } template QVector::QVector(std::initializer_list args) { d = Data::allocate(args.size()); copyConstruct(args.begin(), args.end(), d->begin()); d->size = int(args.size()); } template void QVector::freeData(Data *x) { destruct(x->begin(), x->end()); Data::deallocate(x); } template void QVector::reallocData(const int asize, const int aalloc, QArrayData::AllocationOptions options) { ((!(asize >= 0 && asize <= aalloc)) ? qt_assert("asize >= 0 && asize <= aalloc","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",459) : qt_noop()); Data *x = d; const bool isShared = d->ref.isShared(); if (aalloc != 0) { if (aalloc != int(d->alloc) || isShared) { if (true) { x = Data::allocate(aalloc, options); do {if(!(x))qt_check_pointer("/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",469);} while (0); ((!(x->ref . isSharable() || options . testFlag(QArrayData::Unsharable))) ? qt_assert("x->ref.isSharable() || options.testFlag(QArrayData::Unsharable)","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",471) : qt_noop()); ((!(!x->ref . isStatic())) ? qt_assert("!x->ref.isStatic()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",472) : qt_noop()); x->size = asize; T *srcBegin = d->begin(); T *srcEnd = asize > d->size ? d->end() : d->begin() + asize; T *dst = x->begin(); if (QTypeInfo::isStatic || (isShared && QTypeInfo::isComplex)) { while (srcBegin != srcEnd) { new (dst++) T(*srcBegin++); } } else { ::memcpy(static_cast(dst), static_cast(srcBegin), (srcEnd - srcBegin) * sizeof(T)); dst += srcEnd - srcBegin; if (asize < d->size) destruct(d->begin() + asize, d->end()); } if (asize > d->size) { if (true) { defaultConstruct(dst, x->end()); } else { destruct(x->begin(), dst); qt_noop(); } } } else { Data::deallocate(x); qt_noop(); } x->capacityReserved = d->capacityReserved; } else { ((!(int(d->alloc) == aalloc)) ? qt_assert("int(d->alloc) == aalloc","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",509) : qt_noop()); ((!(isDetached())) ? qt_assert("isDetached()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",510) : qt_noop()); ((!(x == d)) ? qt_assert("x == d","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",511) : qt_noop()); 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::isStatic || !aalloc || (isShared && QTypeInfo::isComplex)) { freeData(d); } else { Data::deallocate(d); } } d = x; } ((!(d->data())) ? qt_assert("d->data()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",535) : qt_noop()); ((!(uint(d->size) <= d->alloc)) ? qt_assert("uint(d->size) <= d->alloc","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",536) : qt_noop()); ((!(d != Data::unsharableEmpty())) ? qt_assert("d != Data::unsharableEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",537) : qt_noop()); ((!(aalloc ? d != Data::sharedNull() : d == Data::sharedNull())) ? qt_assert("aalloc ? d != Data::sharedNull() : d == Data::sharedNull()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",538) : qt_noop()); ((!(d->alloc >= uint(aalloc))) ? qt_assert("d->alloc >= uint(aalloc)","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",539) : qt_noop()); ((!(d->size == asize)) ? qt_assert("d->size == asize","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",540) : qt_noop()); } template T QVector::value(int i) const { if (uint(i) >= uint(d->size)) { return T(); } return d->begin()[i]; } template T QVector::value(int i, const T &defaultValue) const { return uint(i) >= uint(d->size) ? defaultValue : d->begin()[i]; } template void QVector::append(const T &t) { const T copy(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); } if (QTypeInfo::isComplex) new (d->end()) T(copy); else *d->end() = copy; ++d->size; } template void QVector::removeLast() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",576) : qt_noop()); ((!(d->alloc)) ? qt_assert("d->alloc","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",577) : qt_noop()); if (!d->ref.isShared()) { --d->size; if (QTypeInfo::isComplex) (d->data() + d->size)->~T(); } else { reallocData(d->size - 1); } } template typename QVector::iterator QVector::insert(iterator before, size_type n, const T &t) { ((!(isValidIterator(before))) ? qt_assert_x("QVector::insert", "The specified iterator argument 'before' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",591) : qt_noop()); 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::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 QVector::iterator QVector::erase(iterator abegin, iterator aend) { ((!(isValidIterator(abegin))) ? qt_assert_x("QVector::erase", "The specified iterator argument 'abegin' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",626) : qt_noop()); ((!(isValidIterator(aend))) ? qt_assert_x("QVector::erase", "The specified iterator argument 'aend' is invalid","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",627) : qt_noop()); const int itemsToErase = aend - abegin; if (!itemsToErase) return abegin; ((!(abegin >= d->begin())) ? qt_assert("abegin >= d->begin()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",634) : qt_noop()); ((!(aend <= d->end())) ? qt_assert("aend <= d->end()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",635) : qt_noop()); ((!(abegin <= aend)) ? qt_assert("abegin <= aend","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",636) : qt_noop()); const int itemsUntouched = abegin - d->begin(); if (d->alloc) { detach(); abegin = d->begin() + itemsUntouched; aend = abegin + itemsToErase; if (QTypeInfo::isStatic) { iterator moveBegin = abegin + itemsToErase; iterator moveEnd = d->end(); while (moveBegin != moveEnd) { if (QTypeInfo::isComplex) static_cast(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 bool QVector::operator==(const QVector &v) const { if (d->size != v.d->size) return false; if (d == v.d) return true; T* b = d->begin(); T* i = b + d->size; T* j = v.d->end(); while (i != b) if (!(*--i == *--j)) return false; return true; } template QVector &QVector::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 QVector &QVector::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::isComplex) new (--w) T(*--i); else *--w = *--i; } d->size = newSize; } return *this; } template int QVector::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 int QVector::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 bool QVector::contains(const T &t) const { T* b = d->begin(); T* i = d->end(); while (i != b) if (*--i == t) return true; return false; } template int QVector::count(const T &t) const { int c = 0; T* b = d->begin(); T* i = d->end(); while (i != b) if (*--i == t) ++c; return c; } template QVector QVector::mid(int pos, int len) const { if (len < 0) len = size() - pos; if (pos == 0 && len == size()) return *this; if (pos + len > size()) len = size() - pos; QVector copy; copy.reserve(len); for (int i = pos; i < pos + len; ++i) copy += at(i); return copy; } template QList QVector::toList() const { QList result; result.reserve(size()); for (int i = 0; i < size(); ++i) result.append(at(i)); return result; } template QVector QList::toVector() const { QVector result(size()); for (int i = 0; i < size(); ++i) result[i] = at(i); return result; } template QVector QVector::fromList(const QList &list) { return list.toVector(); } template QList QList::fromVector(const QVector &vector) { return vector.toList(); } template class QVectorIterator { typedef typename QVector ::const_iterator const_iterator; QVector c; const_iterator i; public: inline QVectorIterator(const QVector &container) : c(container), i(c . constBegin()) {} inline QVectorIterator &operator=(const QVector &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 QMutableVectorIterator { typedef typename QVector ::iterator iterator; typedef typename QVector ::const_iterator const_iterator; QVector *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableVectorIterator(QVector &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableVectorIterator() { c->setSharable(true); } inline QMutableVectorIterator &operator=(QVector &container) { c->setSharable(true); c = &container; c->setSharable(false); 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() { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",827) : qt_noop()); return *n; } inline const T &value() const { ((!(item_exists())) ? qt_assert("item_exists()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h",827) : qt_noop()); 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; } }; # 849 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qvector.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstack.h" 2 template class QStack : public QVector { public: inline QStack() {} inline ~QStack() {} inline void swap(QStack &other) { QVector::swap(other); } inline void push(const T &t) { QVector::append(t); } T pop(); T &top(); const T &top() const; }; template inline T QStack::pop() { ((!(!this->isEmpty())) ? qt_assert("!this->isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstack.h",65) : qt_noop()); T t = this->data()[this->size() -1]; this->resize(this->size()-1); return t; } template inline T &QStack::top() { ((!(!this->isEmpty())) ? qt_assert("!this->isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstack.h",70) : qt_noop()); this->detach(); return this->data()[this->size()-1]; } template inline const T &QStack::top() const { ((!(!this->isEmpty())) ? qt_assert("!this->isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qstack.h",74) : qt_noop()); return this->data()[this->size()-1]; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstack.h" 2 # 61 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringlist.h" 1 # 62 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QElapsedTimer" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qelapsedtimer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qelapsedtimer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qelapsedtimer.h" 2 class __attribute__((visibility("default"))) QElapsedTimer { public: enum ClockType { SystemTime, MonotonicClock, TickCounter, MachAbsoluteTime, PerformanceCounter }; static ClockType clockType() noexcept; static bool isMonotonic() noexcept; void start() noexcept; qint64 restart() noexcept; void invalidate() noexcept; bool isValid() const noexcept; qint64 nsecsElapsed() const noexcept; qint64 elapsed() const noexcept; bool hasExpired(qint64 timeout) const noexcept; qint64 msecsSinceReference() const noexcept; qint64 msecsTo(const QElapsedTimer &other) const noexcept; qint64 secsTo(const QElapsedTimer &other) const noexcept; bool operator==(const QElapsedTimer &other) const noexcept { return t1 == other.t1 && t2 == other.t2; } bool operator!=(const QElapsedTimer &other) const noexcept { return !(*this == other); } friend bool __attribute__((visibility("default"))) operator<(const QElapsedTimer &v1, const QElapsedTimer &v2) noexcept; private: qint64 t1; qint64 t2; }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qelapsedtimer.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QElapsedTimer" 2 # 63 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QThreadStorage" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qthreadstorage.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qthreadstorage.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qthreadstorage.h" 2 class __attribute__((visibility("default"))) QThreadStorageData { public: explicit QThreadStorageData(void (*func)(void *)); ~QThreadStorageData(); void** get() const; void** set(void* p); static void finish(void**); int id; }; template inline T *&qThreadStorage_localData(QThreadStorageData &d, T **) { void **v = d.get(); if (!v) v = d.set(0); return *(reinterpret_cast(v)); } template inline T *qThreadStorage_localData_const(const QThreadStorageData &d, T **) { void **v = d.get(); return v ? *(reinterpret_cast(v)) : 0; } template inline void qThreadStorage_setLocalData(QThreadStorageData &d, T **t) { (void) d.set(*t); } template inline void qThreadStorage_deleteData(void *d, T **) { delete static_cast(d); } template inline T &qThreadStorage_localData(QThreadStorageData &d, T *) { void **v = d.get(); if (!v) v = d.set(new T()); return *(reinterpret_cast(*v)); } template inline T qThreadStorage_localData_const(const QThreadStorageData &d, T *) { void **v = d.get(); return v ? *(reinterpret_cast(*v)) : T(); } template inline void qThreadStorage_setLocalData(QThreadStorageData &d, T *t) { (void) d.set(new T(*t)); } template inline void qThreadStorage_deleteData(void *d, T *) { delete static_cast(d); } template class QThreadStorage { private: QThreadStorageData d; QThreadStorage(const QThreadStorage &) = delete; QThreadStorage &operator=(const QThreadStorage &) = delete; static inline void deleteData(void *x) { qThreadStorage_deleteData(x, reinterpret_cast(0)); } public: inline QThreadStorage() : d(deleteData) { } inline ~QThreadStorage() { } inline bool hasLocalData() const { return d.get() != 0; } inline T& localData() { return qThreadStorage_localData(d, reinterpret_cast(0)); } inline T localData() const { return qThreadStorage_localData_const(d, reinterpret_cast(0)); } inline void setLocalData(T t) { qThreadStorage_setLocalData(d, &t); } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qthreadstorage.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QThreadStorage" 2 # 64 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/qjsengine.h" 1 # 1 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 46 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 48 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qshareddata.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer_impl.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" 1 # 62 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 65 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 66 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 67 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" 2 template inline void qt_sharedpointer_cast_check(T *) { } template class QWeakPointer; template class QSharedPointer; class QVariant; template QSharedPointer qSharedPointerCast(const QSharedPointer &ptr); template QSharedPointer qSharedPointerDynamicCast(const QSharedPointer &ptr); template QSharedPointer qSharedPointerConstCast(const QSharedPointer &ptr); template QSharedPointer qSharedPointerObjectCast(const QSharedPointer &ptr); namespace QtSharedPointer { template class ExternalRefCount; template QSharedPointer copyAndSetPointer(X * ptr, const QSharedPointer &src); __attribute__((visibility("default"))) void internalSafetyCheckAdd(const void *, const volatile void *); __attribute__((visibility("default"))) void internalSafetyCheckRemove(const void *); template inline void executeDeleter(T *t, RetVal (Klass:: *memberDeleter)()) { (t->*memberDeleter)(); } template inline void executeDeleter(T *t, Deleter d) { d(t); } struct NormalDeleter {}; template struct RemovePointer; template struct RemovePointer { typedef T Type; }; template struct RemovePointer > { typedef T Type; }; template struct RemovePointer > { typedef T Type; }; struct ExternalRefCountData { typedef void (*DestroyerFn)(ExternalRefCountData *); QBasicAtomicInt weakref; QBasicAtomicInt strongref; DestroyerFn destroyer; inline ExternalRefCountData(DestroyerFn d) : destroyer(d) { strongref.store(1); weakref.store(1); } inline ExternalRefCountData(Qt::Initialization) { } ~ExternalRefCountData() { ((!(!weakref . load())) ? qt_assert("!weakref.load()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h",156) : qt_noop()); ((!(strongref . load() <= 0)) ? qt_assert("strongref.load() <= 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h",156) : qt_noop()); } void destroy() { destroyer(this); } __attribute__((visibility("default"))) static ExternalRefCountData *getAndRef(const QObject *); __attribute__((visibility("default"))) void setQObjectShared(const QObject *, bool enable); __attribute__((visibility("default"))) void checkQObjectShared(const QObject *); inline void checkQObjectShared(...) { } inline void setQObjectShared(...) { } inline void operator delete(void *ptr) { ::operator delete(ptr); } inline void operator delete(void *, void *) { } }; template struct CustomDeleter { Deleter deleter; T *ptr; CustomDeleter(T *p, Deleter d) : deleter(d), ptr(p) {} void execute() { executeDeleter(ptr, deleter); } }; template struct CustomDeleter { T *ptr; CustomDeleter(T *p, NormalDeleter) : ptr(p) {} void execute() { delete ptr; } }; template struct ExternalRefCountWithCustomDeleter: public ExternalRefCountData { typedef ExternalRefCountWithCustomDeleter Self; typedef ExternalRefCountData BaseClass; CustomDeleter extra; static inline void deleter(ExternalRefCountData *self) { Self *realself = static_cast(self); realself->extra.execute(); realself->extra.~CustomDeleter(); } static void safetyCheckDeleter(ExternalRefCountData *self) { internalSafetyCheckRemove(self); deleter(self); } static inline Self *create(T *ptr, Deleter userDeleter, DestroyerFn actualDeleter) { Self *d = static_cast(::operator new(sizeof(Self))); new (&d->extra) CustomDeleter(ptr, userDeleter); new (d) BaseClass(actualDeleter); return d; } private: ExternalRefCountWithCustomDeleter() = delete; ~ExternalRefCountWithCustomDeleter() = delete; ExternalRefCountWithCustomDeleter(const ExternalRefCountWithCustomDeleter &) = delete; ExternalRefCountWithCustomDeleter &operator=(const ExternalRefCountWithCustomDeleter &) = delete; }; template struct ExternalRefCountWithContiguousData: public ExternalRefCountData { typedef ExternalRefCountData Parent; T data; static void deleter(ExternalRefCountData *self) { ExternalRefCountWithContiguousData *that = static_cast(self); that->data.~T(); } static void safetyCheckDeleter(ExternalRefCountData *self) { internalSafetyCheckRemove(self); deleter(self); } static inline ExternalRefCountData *create(T **ptr, DestroyerFn destroy) { ExternalRefCountWithContiguousData *d = static_cast(::operator new(sizeof(ExternalRefCountWithContiguousData))); new (d) Parent(destroy); *ptr = &d->data; return d; } private: ExternalRefCountWithContiguousData() = delete; ~ExternalRefCountWithContiguousData() = delete; ExternalRefCountWithContiguousData(const ExternalRefCountWithContiguousData &) = delete; ExternalRefCountWithContiguousData &operator=(const ExternalRefCountWithContiguousData &) = delete; }; __attribute__((visibility("default"))) QWeakPointer weakPointerFromVariant_internal(const QVariant &variant); __attribute__((visibility("default"))) QSharedPointer sharedPointerFromVariant_internal(const QVariant &variant); } template class QSharedPointer { typedef T *QSharedPointer:: *RestrictedBool; typedef QtSharedPointer::ExternalRefCountData Data; public: typedef T Type; typedef T element_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; inline T *data() const { return value; } inline bool isNull() const { return !data(); } inline operator RestrictedBool() const { return isNull() ? 0 : &QSharedPointer::value; } inline bool operator !() const { return isNull(); } inline T &operator*() const { return *data(); } inline T *operator->() const { return data(); } QSharedPointer() : value(0), d(0) { } ~QSharedPointer() { deref(); } inline explicit QSharedPointer(T *ptr) : value(ptr) { internalConstruct(ptr, QtSharedPointer::NormalDeleter()); } template inline QSharedPointer(T *ptr, Deleter deleter) : value(ptr) { internalConstruct(ptr, deleter); } inline QSharedPointer(const QSharedPointer &other) : value(other.value), d(other.d) { if (d) ref(); } inline QSharedPointer &operator=(const QSharedPointer &other) { QSharedPointer copy(other); swap(copy); return *this; } inline QSharedPointer &operator=(QSharedPointer &&other) { swap(other); return *this; } template inline QSharedPointer(const QSharedPointer &other) : value(other.value), d(other.d) { if (d) ref(); } template inline QSharedPointer &operator=(const QSharedPointer &other) { qt_sharedpointer_cast_check(static_cast(0)); internalCopy(other); return *this; } template inline QSharedPointer(const QWeakPointer &other) : value(0), d(0) { *this = other; } template inline QSharedPointer &operator=(const QWeakPointer &other) { internalSet(other.d, other.value); return *this; } inline void swap(QSharedPointer &other) { QSharedPointer::internalSwap(other); } inline void reset() { clear(); } inline void reset(T *t) { QSharedPointer copy(t); swap(copy); } template inline void reset(T *t, Deleter deleter) { QSharedPointer copy(t, deleter); swap(copy); } template QSharedPointer staticCast() const { return qSharedPointerCast(*this); } template QSharedPointer dynamicCast() const { return qSharedPointerDynamicCast(*this); } template QSharedPointer constCast() const { return qSharedPointerConstCast(*this); } template QSharedPointer objectCast() const { return qSharedPointerObjectCast(*this); } inline void clear() { QSharedPointer copy; swap(copy); } QWeakPointer toWeakRef() const; template static QSharedPointer create(Args && ...arguments) { typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; typename Private::DestroyerFn destroy = &Private::deleter; QSharedPointer result(Qt::Uninitialized); result.d = Private::create(&result.value, destroy); new (result.data()) T(std::forward(arguments)...); result.d->setQObjectShared(result.value, true); return result; } # 439 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" private: explicit QSharedPointer(Qt::Initialization) {} inline void deref() { deref(d); } static inline void deref(Data *d) { if (!d) return; if (!d->strongref.deref()) { d->destroy(); } if (!d->weakref.deref()) delete d; } template inline void internalConstruct(T *ptr, Deleter deleter) { if (!ptr) { d = 0; return; } typedef QtSharedPointer::ExternalRefCountWithCustomDeleter Private; typename Private::DestroyerFn actualDeleter = &Private::deleter; d = Private::create(ptr, deleter, actualDeleter); d->setQObjectShared(ptr, true); } template inline void internalCopy(const QSharedPointer &other) { Data *o = other.d; T *actual = other.value; if (o) other.ref(); qSwap(d, o); qSwap(this->value, actual); deref(o); } inline void internalSwap(QSharedPointer &other) { qSwap(d, other.d); qSwap(this->value, other.value); } template friend class QSharedPointer; template friend class QWeakPointer; template friend QSharedPointer QtSharedPointer::copyAndSetPointer(X * ptr, const QSharedPointer &src); inline void ref() const { d->weakref.ref(); d->strongref.ref(); } inline void internalSet(Data *o, T *actual) { if (o) { int tmp = o->strongref.load(); while (tmp > 0) { if (o->strongref.testAndSetRelaxed(tmp, tmp + 1)) break; tmp = o->strongref.load(); } if (tmp > 0) { o->weakref.ref(); } else { o->checkQObjectShared(actual); o = 0; } } qSwap(d, o); qSwap(this->value, actual); if (!d || d->strongref.load() == 0) this->value = 0; deref(o); } Type *value; Data *d; }; template class QWeakPointer { typedef T *QWeakPointer:: *RestrictedBool; typedef QtSharedPointer::ExternalRefCountData Data; public: typedef T element_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; inline bool isNull() const { return d == 0 || d->strongref.load() == 0 || value == 0; } inline operator RestrictedBool() const { return isNull() ? 0 : &QWeakPointer::value; } inline bool operator !() const { return isNull(); } inline T *data() const { return d == 0 || d->strongref.load() == 0 ? 0 : value; } inline QWeakPointer() : d(0), value(0) { } inline ~QWeakPointer() { if (d && !d->weakref.deref()) delete d; } # 569 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h" inline QWeakPointer(const QWeakPointer &o) : d(o.d), value(o.value) { if (d) d->weakref.ref(); } inline QWeakPointer &operator=(const QWeakPointer &o) { internalSet(o.d, o.value); return *this; } inline QWeakPointer(const QSharedPointer &o) : d(o.d), value(o.data()) { if (d) d->weakref.ref();} inline QWeakPointer &operator=(const QSharedPointer &o) { internalSet(o.d, o.value); return *this; } template inline QWeakPointer(const QWeakPointer &o) : d(0), value(0) { *this = o; } template inline QWeakPointer &operator=(const QWeakPointer &o) { *this = o.toStrongRef(); return *this; } template inline bool operator==(const QWeakPointer &o) const { return d == o.d && value == static_cast(o.value); } template inline bool operator!=(const QWeakPointer &o) const { return !(*this == o); } template inline QWeakPointer(const QSharedPointer &o) : d(0), value(0) { *this = o; } template inline QWeakPointer &operator=(const QSharedPointer &o) { qt_sharedpointer_cast_check(static_cast(0)); internalSet(o.d, o.data()); return *this; } template inline bool operator==(const QSharedPointer &o) const { return d == o.d; } template inline bool operator!=(const QSharedPointer &o) const { return !(*this == o); } inline void clear() { *this = QWeakPointer(); } inline QSharedPointer toStrongRef() const { return QSharedPointer(*this); } private: template friend class QSharedPointer; template friend class QPointer; template inline QWeakPointer &assign(X *ptr) { return *this = QWeakPointer(ptr, true); } template inline QWeakPointer(X *ptr, bool) : d(ptr ? Data::getAndRef(ptr) : 0), value(ptr) { } inline void internalSet(Data *o, T *actual) { if (d == o) return; if (o) o->weakref.ref(); if (d && !d->weakref.deref()) delete d; d = o; value = actual; } Data *d; T *value; }; template bool operator==(const QSharedPointer &ptr1, const QSharedPointer &ptr2) { return ptr1.data() == ptr2.data(); } template bool operator!=(const QSharedPointer &ptr1, const QSharedPointer &ptr2) { return ptr1.data() != ptr2.data(); } template bool operator==(const QSharedPointer &ptr1, const X *ptr2) { return ptr1.data() == ptr2; } template bool operator==(const T *ptr1, const QSharedPointer &ptr2) { return ptr1 == ptr2.data(); } template bool operator!=(const QSharedPointer &ptr1, const X *ptr2) { return !(ptr1 == ptr2); } template bool operator!=(const T *ptr1, const QSharedPointer &ptr2) { return !(ptr2 == ptr1); } template bool operator==(const QSharedPointer &ptr1, const QWeakPointer &ptr2) { return ptr2 == ptr1; } template bool operator!=(const QSharedPointer &ptr1, const QWeakPointer &ptr2) { return ptr2 != ptr1; } template inline typename QSharedPointer::difference_type operator-(const QSharedPointer &ptr1, const QSharedPointer &ptr2) { return ptr1.data() - ptr2.data(); } template inline typename QSharedPointer::difference_type operator-(const QSharedPointer &ptr1, X *ptr2) { return ptr1.data() - ptr2; } template inline typename QSharedPointer::difference_type operator-(T *ptr1, const QSharedPointer &ptr2) { return ptr1 - ptr2.data(); } template inline bool operator<(const QSharedPointer &ptr1, const QSharedPointer &ptr2) { return ptr1.data() < ptr2.data(); } template inline bool operator<(const QSharedPointer &ptr1, X *ptr2) { return ptr1.data() < ptr2; } template inline bool operator<(T *ptr1, const QSharedPointer &ptr2) { return ptr1 < ptr2.data(); } template inline uint qHash(const QSharedPointer &ptr, uint seed = 0) { return ::qHash(ptr.data(), seed); } template inline QWeakPointer QSharedPointer::toWeakRef() const { return QWeakPointer(*this); } template inline void qSwap(QSharedPointer &p1, QSharedPointer &p2) { p1.swap(p2); } namespace std { template inline void swap(::QSharedPointer &p1, ::QSharedPointer &p2) { p1.swap(p2); } } namespace QtSharedPointer { template inline QSharedPointer copyAndSetPointer(X *ptr, const QSharedPointer &src) { QSharedPointer result; result.internalSet(src.d, ptr); return result; } } template inline QSharedPointer qSharedPointerCast(const QSharedPointer &src) { X *ptr = static_cast(src.data()); return QtSharedPointer::copyAndSetPointer(ptr, src); } template inline QSharedPointer qSharedPointerCast(const QWeakPointer &src) { return qSharedPointerCast(src.toStrongRef()); } template inline QSharedPointer qSharedPointerDynamicCast(const QSharedPointer &src) { X *ptr = dynamic_cast(src.data()); if (!ptr) return QSharedPointer(); return QtSharedPointer::copyAndSetPointer(ptr, src); } template inline QSharedPointer qSharedPointerDynamicCast(const QWeakPointer &src) { return qSharedPointerDynamicCast(src.toStrongRef()); } template inline QSharedPointer qSharedPointerConstCast(const QSharedPointer &src) { X *ptr = const_cast(src.data()); return QtSharedPointer::copyAndSetPointer(ptr, src); } template inline QSharedPointer qSharedPointerConstCast(const QWeakPointer &src) { return qSharedPointerConstCast(src.toStrongRef()); } template inline QWeakPointer qWeakPointerCast(const QSharedPointer &src) { return qSharedPointerCast(src).toWeakRef(); } template inline QSharedPointer qSharedPointerObjectCast(const QSharedPointer &src) { X *ptr = qobject_cast(src.data()); return QtSharedPointer::copyAndSetPointer(ptr, src); } template inline QSharedPointer qSharedPointerObjectCast(const QWeakPointer &src) { return qSharedPointerObjectCast(src.toStrongRef()); } template inline QSharedPointer::Type> qobject_cast(const QSharedPointer &src) { return qSharedPointerObjectCast::Type, T>(src); } template inline QSharedPointer::Type> qobject_cast(const QWeakPointer &src) { return qSharedPointerObjectCast::Type, T>(src); } template QWeakPointer::Value, T>::Type> qWeakPointerFromVariant(const QVariant &variant) { return QWeakPointer(qobject_cast(QtSharedPointer::weakPointerFromVariant_internal(variant).data())); } template QSharedPointer::Value, T>::Type> qSharedPointerFromVariant(const QVariant &variant) { return qSharedPointerObjectCast(QtSharedPointer::sharedPointerFromVariant_internal(variant)); } template class QTypeInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QWeakPointer)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QWeakPointer) }; static inline const char *name() { return "QWeakPointer"; } }; template class QTypeInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSharedPointer)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QSharedPointer) }; static inline const char *name() { return "QSharedPointer"; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer_impl.h" 2 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" 2 # 154 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer.h" 2 # 49 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 50 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 2 # 1 "../../include/QtQml/qjsvalue.h" 1 # 1 "../../include/QtQml/../../src/qml/jsapi/qjsvalue.h" 1 # 1 "../../include/QtQml/qtqmlglobal.h" 1 # 46 "../../include/QtQml/../../src/qml/jsapi/qjsvalue.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 47 "../../include/QtQml/../../src/qml/jsapi/qjsvalue.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 48 "../../include/QtQml/../../src/qml/jsapi/qjsvalue.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 49 "../../include/QtQml/../../src/qml/jsapi/qjsvalue.h" 2 class QJSValue; class QJSEngine; class QVariant; class QObject; struct QMetaObject; class QDateTime; typedef QList QJSValueList; class QJSValuePrivate; class __attribute__((visibility("default"))) QJSValue { public: enum SpecialValue { NullValue, UndefinedValue }; public: QJSValue(SpecialValue value = UndefinedValue); ~QJSValue(); QJSValue(const QJSValue &other); QJSValue(bool value); QJSValue(int value); QJSValue(uint value); QJSValue(double value); QJSValue(const QString &value); QJSValue(const QLatin1String &value); __attribute__ ((__deprecated__)) QJSValue(const char *str); QJSValue &operator=(const QJSValue &other); bool isBool() const; bool isNumber() const; bool isNull() const; bool isString() const; bool isUndefined() const; bool isVariant() const; bool isQObject() const; bool isObject() const; bool isDate() const; bool isRegExp() const; bool isArray() const; bool isError() const; QString toString() const; double toNumber() const; qint32 toInt() const; quint32 toUInt() const; bool toBool() const; QVariant toVariant() const; QObject *toQObject() const; QDateTime toDateTime() const; bool equals(const QJSValue &other) const; bool strictlyEquals(const QJSValue &other) const; QJSValue prototype() const; void setPrototype(const QJSValue &prototype); QJSValue property(const QString &name) const; void setProperty(const QString &name, const QJSValue &value); bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); bool deleteProperty(const QString &name); bool isCallable() const; QJSValue call(const QJSValueList &args = QJSValueList()); QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()); QJSValue callAsConstructor(const QJSValueList &args = QJSValueList()); __attribute__ ((__deprecated__)) QJSEngine *engine() const; QJSValue(QJSValuePrivate *dd); private: friend class QJSValuePrivate; QJSValue(void *) = delete; QJSValuePrivate *d; }; template < > struct QMetaTypeId< QJSValue > { 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< QJSValue >("QJSValue", reinterpret_cast< QJSValue * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; # 2 "../../include/QtQml/qjsvalue.h" 2 # 51 "../../include/QtQml/../../src/qml/jsapi/qjsengine.h" 2 class QV8Engine; template inline T qjsvalue_cast(const QJSValue &); class QJSEnginePrivate; class __attribute__((visibility("default"))) QJSEngine : public QObject { public: template inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: static void qt_static_metacall(QObject *, QMetaObject::Call, int, void * *); struct QPrivateSignal {}; public: QJSEngine(); explicit QJSEngine(QObject *parent); virtual ~QJSEngine(); QJSValue globalObject() const; QJSValue evaluate(const QString &program, const QString &fileName = QString(), int lineNumber = 1); QJSValue newObject(); QJSValue newArray(uint length = 0); QJSValue newQObject(QObject *object); template inline QJSValue toScriptValue(const T &value) { return create(qMetaTypeId(), &value); } template inline T fromScriptValue(const QJSValue &value) { return qjsvalue_cast(value); } void collectGarbage(); QV8Engine *handle() const { return d; } private: QJSValue create(int type, const void *ptr); static bool convertV2(const QJSValue &value, int type, void *ptr); friend inline bool qjsvalue_cast_helper(const QJSValue &, int, void *); protected: QJSEngine(QJSEnginePrivate &dd, QObject *parent = 0); private: QV8Engine *d; QJSEngine(const QJSEngine &) = delete; QJSEngine &operator=(const QJSEngine &) = delete; inline QJSEnginePrivate* d_func() { return reinterpret_cast(qGetPtrHelper(d_ptr)); } inline const QJSEnginePrivate* d_func() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } friend class QJSEnginePrivate; friend class QV8Engine; }; inline bool qjsvalue_cast_helper(const QJSValue &value, int type, void *ptr) { return QJSEngine::convertV2(value, type, ptr); } template T qjsvalue_cast(const QJSValue &value) { T t; const int id = qMetaTypeId(); if (qjsvalue_cast_helper(value, id, &t)) return t; else if (value.isVariant()) return qvariant_cast(value.toVariant()); return T(); } template <> inline QVariant qjsvalue_cast(const QJSValue &value) { return value.toVariant(); } # 2 "../../include/QtQml/qjsengine.h" 2 # 66 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qintrusivelist_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qintrusivelist_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qintrusivelist_p.h" 2 class QIntrusiveListNode; template class QIntrusiveList { public: inline QIntrusiveList(); inline ~QIntrusiveList(); inline bool isEmpty() const; inline void insert(N *n); inline void remove(N *n); inline bool contains(N *) const; class iterator { public: inline iterator(); inline iterator(N *value); inline N *operator*() const; inline N *operator->() const; inline bool operator==(const iterator &other) const; inline bool operator!=(const iterator &other) const; inline iterator &operator++(); inline iterator &erase(); private: N *_value; }; typedef iterator Iterator; inline N *first() const; static inline N *next(N *current); inline iterator begin(); inline iterator end(); private: static inline N *nodeToN(QIntrusiveListNode *node); QIntrusiveListNode *__first; }; class QIntrusiveListNode { public: inline QIntrusiveListNode(); inline ~QIntrusiveListNode(); inline void remove(); inline bool isInList() const; QIntrusiveListNode *_next; QIntrusiveListNode**_prev; }; template QIntrusiveList::iterator::iterator() : _value(0) { } template QIntrusiveList::iterator::iterator(N *value) : _value(value) { } template N *QIntrusiveList::iterator::operator*() const { return _value; } template N *QIntrusiveList::iterator::operator->() const { return _value; } template bool QIntrusiveList::iterator::operator==(const iterator &other) const { return other._value == _value; } template bool QIntrusiveList::iterator::operator!=(const iterator &other) const { return other._value != _value; } template typename QIntrusiveList::iterator &QIntrusiveList::iterator::operator++() { _value = QIntrusiveList::next(_value); return *this; } template typename QIntrusiveList::iterator &QIntrusiveList::iterator::erase() { N *old = _value; _value = QIntrusiveList::next(_value); (old->*member).remove(); return *this; } template QIntrusiveList::QIntrusiveList() : __first(0) { } template QIntrusiveList::~QIntrusiveList() { while (__first) __first->remove(); } template bool QIntrusiveList::isEmpty() const { return __first == 0; } template void QIntrusiveList::insert(N *n) { QIntrusiveListNode *nnode = &(n->*member); nnode->remove(); nnode->_next = __first; if (nnode->_next) nnode->_next->_prev = &nnode->_next; __first = nnode; nnode->_prev = &__first; } template void QIntrusiveList::remove(N *n) { QIntrusiveListNode *nnode = &(n->*member); nnode->remove(); } template bool QIntrusiveList::contains(N *n) const { QIntrusiveListNode *nnode = __first; while (nnode) { if (nodeToN(nnode) == n) return true; nnode = nnode->_next; } return false; } template N *QIntrusiveList::first() const { return __first?nodeToN(__first):0; } template N *QIntrusiveList::next(N *current) { QIntrusiveListNode *nextnode = (current->*member)._next; N *nextstruct = nextnode?nodeToN(nextnode):0; return nextstruct; } template typename QIntrusiveList::iterator QIntrusiveList::begin() { return __first?iterator(nodeToN(__first)):iterator(); } template typename QIntrusiveList::iterator QIntrusiveList::end() { return iterator(); } template N *QIntrusiveList::nodeToN(QIntrusiveListNode *node) { return (N *)((char *)node - ((char *)&(((N *)0)->*member) - (char *)0)); } QIntrusiveListNode::QIntrusiveListNode() : _next(0), _prev(0) { } QIntrusiveListNode::~QIntrusiveListNode() { remove(); } void QIntrusiveListNode::remove() { if (_prev) *_prev = _next; if (_next) _next->_prev = _prev; _prev = 0; _next = 0; } bool QIntrusiveListNode::isInList() const { return _prev != 0; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qintrusivelist_p.h" 2 # 67 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmlpropertycache_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmlrefcount_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h" 2 class QQmlRefCount { public: inline QQmlRefCount(); inline virtual ~QQmlRefCount(); inline void addref(); inline void release(); inline int count() const; protected: inline virtual void destroy(); private: QAtomicInt refCount; }; template class QQmlRefPointer { public: inline QQmlRefPointer(); inline QQmlRefPointer(T *); inline QQmlRefPointer(const QQmlRefPointer &); inline ~QQmlRefPointer(); inline QQmlRefPointer &operator=(const QQmlRefPointer &o); inline QQmlRefPointer &operator=(T *); inline bool isNull() const { return !o; } inline T* operator->() const { return o; } inline T& operator*() const { return *o; } inline operator T*() const { return o; } inline T* data() const { return o; } inline QQmlRefPointer &take(T *); private: T *o; }; QQmlRefCount::QQmlRefCount() : refCount(1) { } QQmlRefCount::~QQmlRefCount() { ((!(refCount . load() == 0)) ? qt_assert("refCount.load() == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h",110) : qt_noop()); } void QQmlRefCount::addref() { ((!(refCount . load() > 0)) ? qt_assert("refCount.load() > 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h",115) : qt_noop()); refCount.ref(); } void QQmlRefCount::release() { ((!(refCount . load() > 0)) ? qt_assert("refCount.load() > 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qqmlrefcount_p.h",121) : qt_noop()); if (!refCount.deref()) destroy(); } int QQmlRefCount::count() const { return refCount.load(); } void QQmlRefCount::destroy() { delete this; } template QQmlRefPointer::QQmlRefPointer() : o(0) { } template QQmlRefPointer::QQmlRefPointer(T *o) : o(o) { if (o) o->addref(); } template QQmlRefPointer::QQmlRefPointer(const QQmlRefPointer &other) : o(other.o) { if (o) o->addref(); } template QQmlRefPointer::~QQmlRefPointer() { if (o) o->release(); } template QQmlRefPointer &QQmlRefPointer::operator=(const QQmlRefPointer &other) { if (other.o) other.o->addref(); if (o) o->release(); o = other.o; return *this; } template QQmlRefPointer &QQmlRefPointer::operator=(T *other) { if (other) other->addref(); if (o) o->release(); o = other; return *this; } template QQmlRefPointer &QQmlRefPointer::take(T *other) { if (o) o->release(); o = other; return *this; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qqmlrefcount_p.h" 2 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qflagpointer_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h" 2 template class QFlagPointer { public: inline QFlagPointer(); inline QFlagPointer(T *); inline QFlagPointer(const QFlagPointer &o); inline bool isNull() const; inline bool flag() const; inline void setFlag(); inline void clearFlag(); inline void setFlagValue(bool); inline bool flag2() const; inline void setFlag2(); inline void clearFlag2(); inline void setFlag2Value(bool); inline QFlagPointer &operator=(const QFlagPointer &o); inline QFlagPointer &operator=(T *); inline T *operator->() const; inline T *operator*() const; inline T *data() const; private: quintptr ptr_value; static const quintptr FlagBit = 0x1; static const quintptr Flag2Bit = 0x2; static const quintptr FlagsMask = FlagBit | Flag2Bit; }; template class QBiPointer { public: inline QBiPointer(); inline QBiPointer(T *); inline QBiPointer(T2 *); inline QBiPointer(const QBiPointer &o); inline bool isNull() const; inline bool isT1() const; inline bool isT2() const; inline bool flag() const; inline void setFlag(); inline void clearFlag(); inline void setFlagValue(bool); inline QBiPointer &operator=(const QBiPointer &o); inline QBiPointer &operator=(T *); inline QBiPointer &operator=(T2 *); inline T *asT1() const; inline T2 *asT2() const; private: quintptr ptr_value; static const quintptr FlagBit = 0x1; static const quintptr Flag2Bit = 0x2; static const quintptr FlagsMask = FlagBit | Flag2Bit; }; template QFlagPointer::QFlagPointer() : ptr_value(0) { } template QFlagPointer::QFlagPointer(T *v) : ptr_value(quintptr(v)) { ((!((ptr_value & FlagsMask) == 0)) ? qt_assert("(ptr_value & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",137) : qt_noop()); } template QFlagPointer::QFlagPointer(const QFlagPointer &o) : ptr_value(o.ptr_value) { } template bool QFlagPointer::isNull() const { return 0 == (ptr_value & (~FlagsMask)); } template bool QFlagPointer::flag() const { return ptr_value & FlagBit; } template void QFlagPointer::setFlag() { ptr_value |= FlagBit; } template void QFlagPointer::clearFlag() { ptr_value &= ~FlagBit; } template void QFlagPointer::setFlagValue(bool v) { if (v) setFlag(); else clearFlag(); } template bool QFlagPointer::flag2() const { return ptr_value & Flag2Bit; } template void QFlagPointer::setFlag2() { ptr_value|= Flag2Bit; } template void QFlagPointer::clearFlag2() { ptr_value &= ~Flag2Bit; } template void QFlagPointer::setFlag2Value(bool v) { if (v) setFlag2(); else clearFlag2(); } template QFlagPointer &QFlagPointer::operator=(const QFlagPointer &o) { ptr_value = o.ptr_value; return *this; } template QFlagPointer &QFlagPointer::operator=(T *o) { ((!((quintptr(o) & FlagsMask) == 0)) ? qt_assert("(quintptr(o) & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",212) : qt_noop()); ptr_value = quintptr(o) | (ptr_value & FlagsMask); return *this; } template T *QFlagPointer::operator->() const { return (T *)(ptr_value & ~FlagsMask); } template T *QFlagPointer::operator*() const { return (T *)(ptr_value & ~FlagsMask); } template T *QFlagPointer::data() const { return (T *)(ptr_value & ~FlagsMask); } template QBiPointer::QBiPointer() : ptr_value(0) { } template QBiPointer::QBiPointer(T *v) : ptr_value(quintptr(v)) { ((!((quintptr(v) & FlagsMask) == 0)) ? qt_assert("(quintptr(v) & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",246) : qt_noop()); } template QBiPointer::QBiPointer(T2 *v) : ptr_value(quintptr(v) | Flag2Bit) { ((!((quintptr(v) & FlagsMask) == 0)) ? qt_assert("(quintptr(v) & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",253) : qt_noop()); } template QBiPointer::QBiPointer(const QBiPointer &o) : ptr_value(o.ptr_value) { } template bool QBiPointer::isNull() const { return 0 == (ptr_value & (~FlagsMask)); } template bool QBiPointer::isT1() const { return !(ptr_value & Flag2Bit); } template bool QBiPointer::isT2() const { return ptr_value & Flag2Bit; } template bool QBiPointer::flag() const { return ptr_value & FlagBit; } template void QBiPointer::setFlag() { ptr_value |= FlagBit; } template void QBiPointer::clearFlag() { ptr_value &= ~FlagBit; } template void QBiPointer::setFlagValue(bool v) { if (v) setFlag(); else clearFlag(); } template QBiPointer &QBiPointer::operator=(const QBiPointer &o) { ptr_value = o.ptr_value; return *this; } template QBiPointer &QBiPointer::operator=(T *o) { ((!((quintptr(o) & FlagsMask) == 0)) ? qt_assert("(quintptr(o) & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",315) : qt_noop()); ptr_value = quintptr(o) | (ptr_value & FlagBit); return *this; } template QBiPointer &QBiPointer::operator=(T2 *o) { ((!((quintptr(o) & FlagsMask) == 0)) ? qt_assert("(quintptr(o) & FlagsMask) == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",324) : qt_noop()); ptr_value = quintptr(o) | (ptr_value & FlagBit) | Flag2Bit; return *this; } template T *QBiPointer::asT1() const { ((!(isT1())) ? qt_assert("isT1()","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",333) : qt_noop()); return (T *)(ptr_value & ~FlagsMask); } template T2 *QBiPointer::asT2() const { ((!(isT2())) ? qt_assert("isT2()","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qflagpointer_p.h",340) : qt_noop()); return (T2 *)(ptr_value & ~FlagsMask); } # 2 "../../include/QtQml/5.2.0/QtQml/private/qflagpointer_p.h" 2 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlcleanup_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qtqmlglobal_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qtqmlglobal_p.h" 1 # 2 "../../include/QtQml/5.2.0/QtQml/private/qtqmlglobal_p.h" 2 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlcleanup_p.h" 2 class QQmlEngine; class __attribute__((visibility("default"))) QQmlCleanup { public: QQmlCleanup(); QQmlCleanup(QQmlEngine *); virtual ~QQmlCleanup(); bool hasEngine() const { return prev != 0; } void addToEngine(QQmlEngine *); protected: virtual void clear() = 0; private: friend class QQmlEnginePrivate; QQmlCleanup **prev; QQmlCleanup *next; QQmlEngine *engine; }; # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlnotifier_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qtqmlglobal_p.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/qobject_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobject.h" 1 # 58 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qpointer.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qpointer.h" 2 class QVariant; template class QPointer { template struct TypeSelector { typedef QObject Type; }; template struct TypeSelector { typedef const QObject Type; }; typedef typename TypeSelector::Type QObjectType; QWeakPointer wp; public: inline QPointer() { } inline QPointer(T *p) : wp(p, true) { } inline ~QPointer() { } inline QPointer &operator=(T* p) { wp.assign(static_cast(p)); return *this; } inline T* data() const { return static_cast( wp.data()); } inline T* operator->() const { return data(); } inline T& operator*() const { return *data(); } inline operator T*() const { return data(); } inline bool isNull() const { return wp.isNull(); } inline void clear() { wp.clear(); } }; template class QTypeInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPointer)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QPointer) }; static inline const char *name() { return "QPointer"; } }; template inline bool operator==(const T *o, const QPointer &p) { return o == p.operator->(); } template inline bool operator==(const QPointer &p, const T *o) { return p.operator->() == o; } template inline bool operator==(T *o, const QPointer &p) { return o == p.operator->(); } template inline bool operator==(const QPointer &p, T *o) { return p.operator->() == o; } template inline bool operator==(const QPointer &p1, const QPointer &p2) { return p1.operator->() == p2.operator->(); } template inline bool operator!=(const T *o, const QPointer &p) { return o != p.operator->(); } template inline bool operator!= (const QPointer &p, const T *o) { return p.operator->() != o; } template inline bool operator!=(T *o, const QPointer &p) { return o != p.operator->(); } template inline bool operator!= (const QPointer &p, T *o) { return p.operator->() != o; } template inline bool operator!= (const QPointer &p1, const QPointer &p2) { return p1.operator->() != p2.operator->() ; } template QPointer qPointerFromVariant(const QVariant &variant) { return QPointer(qobject_cast(QtSharedPointer::weakPointerFromVariant_internal(variant).data())); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpointer.h" 2 # 59 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qsharedpointer.h" 1 # 60 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcoreevent.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qcoreevent.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnamespace.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qcoreevent.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qcoreevent.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/kernel/qcoreevent.h" 2 class QEventPrivate; class __attribute__((visibility("default"))) QEvent { public: static const QMetaObject staticMetaObject; private: public: enum Type { None = 0, Timer = 1, MouseButtonPress = 2, MouseButtonRelease = 3, MouseButtonDblClick = 4, MouseMove = 5, KeyPress = 6, KeyRelease = 7, FocusIn = 8, FocusOut = 9, FocusAboutToChange = 23, Enter = 10, Leave = 11, Paint = 12, Move = 13, Resize = 14, Create = 15, Destroy = 16, Show = 17, Hide = 18, Close = 19, Quit = 20, ParentChange = 21, ParentAboutToChange = 131, ThreadChange = 22, WindowActivate = 24, WindowDeactivate = 25, ShowToParent = 26, HideToParent = 27, Wheel = 31, WindowTitleChange = 33, WindowIconChange = 34, ApplicationWindowIconChange = 35, ApplicationFontChange = 36, ApplicationLayoutDirectionChange = 37, ApplicationPaletteChange = 38, PaletteChange = 39, Clipboard = 40, Speech = 42, MetaCall = 43, SockAct = 50, WinEventAct = 132, DeferredDelete = 52, DragEnter = 60, DragMove = 61, DragLeave = 62, Drop = 63, DragResponse = 64, ChildAdded = 68, ChildPolished = 69, ChildRemoved = 71, ShowWindowRequest = 73, PolishRequest = 74, Polish = 75, LayoutRequest = 76, UpdateRequest = 77, UpdateLater = 78, EmbeddingControl = 79, ActivateControl = 80, DeactivateControl = 81, ContextMenu = 82, InputMethod = 83, TabletMove = 87, LocaleChange = 88, LanguageChange = 89, LayoutDirectionChange = 90, Style = 91, TabletPress = 92, TabletRelease = 93, OkRequest = 94, HelpRequest = 95, IconDrag = 96, FontChange = 97, EnabledChange = 98, ActivationChange = 99, StyleChange = 100, IconTextChange = 101, ModifiedChange = 102, MouseTrackingChange = 109, WindowBlocked = 103, WindowUnblocked = 104, WindowStateChange = 105, ToolTip = 110, WhatsThis = 111, StatusTip = 112, ActionChanged = 113, ActionAdded = 114, ActionRemoved = 115, FileOpen = 116, Shortcut = 117, ShortcutOverride = 51, WhatsThisClicked = 118, ToolBarChange = 120, ApplicationActivate = 121, ApplicationActivated = ApplicationActivate, ApplicationDeactivate = 122, ApplicationDeactivated = ApplicationDeactivate, QueryWhatsThis = 123, EnterWhatsThisMode = 124, LeaveWhatsThisMode = 125, ZOrderChange = 126, HoverEnter = 127, HoverLeave = 128, HoverMove = 129, AcceptDropsChange = 152, ZeroTimerEvent = 154, GraphicsSceneMouseMove = 155, GraphicsSceneMousePress = 156, GraphicsSceneMouseRelease = 157, GraphicsSceneMouseDoubleClick = 158, GraphicsSceneContextMenu = 159, GraphicsSceneHoverEnter = 160, GraphicsSceneHoverMove = 161, GraphicsSceneHoverLeave = 162, GraphicsSceneHelp = 163, GraphicsSceneDragEnter = 164, GraphicsSceneDragMove = 165, GraphicsSceneDragLeave = 166, GraphicsSceneDrop = 167, GraphicsSceneWheel = 168, KeyboardLayoutChange = 169, DynamicPropertyChange = 170, TabletEnterProximity = 171, TabletLeaveProximity = 172, NonClientAreaMouseMove = 173, NonClientAreaMouseButtonPress = 174, NonClientAreaMouseButtonRelease = 175, NonClientAreaMouseButtonDblClick = 176, MacSizeChange = 177, ContentsRectChange = 178, MacGLWindowChange = 179, FutureCallOut = 180, GraphicsSceneResize = 181, GraphicsSceneMove = 182, CursorChange = 183, ToolTipChange = 184, NetworkReplyUpdated = 185, GrabMouse = 186, UngrabMouse = 187, GrabKeyboard = 188, UngrabKeyboard = 189, MacGLClearDrawable = 191, StateMachineSignal = 192, StateMachineWrapped = 193, TouchBegin = 194, TouchUpdate = 195, TouchEnd = 196, NativeGesture = 197, RequestSoftwareInputPanel = 199, CloseSoftwareInputPanel = 200, WinIdChange = 203, Gesture = 198, GestureOverride = 202, ScrollPrepare = 204, Scroll = 205, Expose = 206, InputMethodQuery = 207, OrientationChange = 208, TouchCancel = 209, ThemeChange = 210, SockClose = 211, PlatformPanel = 212, StyleAnimationUpdate = 213, ApplicationStateChange = 214, User = 1000, MaxUser = 65535 }; explicit QEvent(Type type); QEvent(const QEvent &other); virtual ~QEvent(); QEvent &operator=(const QEvent &other); inline Type type() const { return static_cast(t); } inline bool spontaneous() const { return spont; } inline void setAccepted(bool accepted) { m_accept = accepted; } inline bool isAccepted() const { return m_accept; } inline void accept() { m_accept = true; } inline void ignore() { m_accept = false; } static int registerEventType(int hint = -1); protected: QEventPrivate *d; ushort t; private: ushort posted : 1; ushort spont : 1; ushort m_accept : 1; ushort reserved : 13; friend class QCoreApplication; friend class QCoreApplicationPrivate; friend class QThreadData; friend class QApplication; friend class QApplicationPrivate; friend class QShortcutMap; friend class QETWidget; friend class QGraphicsView; friend class QGraphicsViewPrivate; friend class QGraphicsScene; friend class QGraphicsScenePrivate; friend class QGestureManager; }; class __attribute__((visibility("default"))) QTimerEvent : public QEvent { public: explicit QTimerEvent( int timerId ); ~QTimerEvent(); int timerId() const { return id; } protected: int id; }; class QObject; class __attribute__((visibility("default"))) QChildEvent : public QEvent { public: QChildEvent( Type type, QObject *child ); ~QChildEvent(); QObject *child() const { return c; } bool added() const { return type() == ChildAdded; } bool polished() const { return type() == ChildPolished; } bool removed() const { return type() == ChildRemoved; } protected: QObject *c; }; class __attribute__((visibility("default"))) QDynamicPropertyChangeEvent : public QEvent { public: explicit QDynamicPropertyChangeEvent(const QByteArray &name); ~QDynamicPropertyChangeEvent(); inline QByteArray propertyName() const { return n; } private: QByteArray n; }; class __attribute__((visibility("default"))) QDeferredDeleteEvent : public QEvent { public: explicit QDeferredDeleteEvent(); ~QDeferredDeleteEvent(); int loopLevel() const { return level; } private: int level; friend class QCoreApplication; }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcoreevent.h" 2 # 61 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 62 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 63 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvariant.h" 1 # 64 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qreadwritelock.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qreadwritelock.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qreadwritelock.h" 2 struct QReadWriteLockPrivate; class __attribute__((visibility("default"))) QReadWriteLock { public: enum RecursionMode { NonRecursive, Recursive }; explicit QReadWriteLock(RecursionMode recursionMode = NonRecursive); ~QReadWriteLock(); void lockForRead(); bool tryLockForRead(); bool tryLockForRead(int timeout); void lockForWrite(); bool tryLockForWrite(); bool tryLockForWrite(int timeout); void unlock(); private: QReadWriteLock(const QReadWriteLock &) = delete; QReadWriteLock &operator=(const QReadWriteLock &) = delete; QReadWriteLockPrivate *d; friend class QWaitCondition; }; class __attribute__((visibility("default"))) QReadLocker { public: inline QReadLocker(QReadWriteLock *readWriteLock); inline ~QReadLocker() { unlock(); } inline void unlock() { if (q_val) { if ((q_val & quintptr(1u)) == quintptr(1u)) { q_val &= ~quintptr(1u); readWriteLock()->unlock(); } } } inline void relock() { if (q_val) { if ((q_val & quintptr(1u)) == quintptr(0u)) { readWriteLock()->lockForRead(); q_val |= quintptr(1u); } } } inline QReadWriteLock *readWriteLock() const { return reinterpret_cast(q_val & ~quintptr(1u)); } private: QReadLocker(const QReadLocker &) = delete; QReadLocker &operator=(const QReadLocker &) = delete; quintptr q_val; }; inline QReadLocker::QReadLocker(QReadWriteLock *areadWriteLock) : q_val(reinterpret_cast(areadWriteLock)) { ((!((q_val & quintptr(1u)) == quintptr(0))) ? qt_assert_x("QReadLocker", "QReadWriteLock pointer is misaligned","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qreadwritelock.h",124) : qt_noop()); relock(); } class __attribute__((visibility("default"))) QWriteLocker { public: inline QWriteLocker(QReadWriteLock *readWriteLock); inline ~QWriteLocker() { unlock(); } inline void unlock() { if (q_val) { if ((q_val & quintptr(1u)) == quintptr(1u)) { q_val &= ~quintptr(1u); readWriteLock()->unlock(); } } } inline void relock() { if (q_val) { if ((q_val & quintptr(1u)) == quintptr(0u)) { readWriteLock()->lockForWrite(); q_val |= quintptr(1u); } } } inline QReadWriteLock *readWriteLock() const { return reinterpret_cast(q_val & ~quintptr(1u)); } private: QWriteLocker(const QWriteLocker &) = delete; QWriteLocker &operator=(const QWriteLocker &) = delete; quintptr q_val; }; inline QWriteLocker::QWriteLocker(QReadWriteLock *areadWriteLock) : q_val(reinterpret_cast(areadWriteLock)) { ((!((q_val & quintptr(1u)) == quintptr(0))) ? qt_assert_x("QWriteLocker", "QReadWriteLock pointer is misaligned","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qreadwritelock.h",169) : qt_noop()); relock(); } # 229 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qreadwritelock.h" # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qreadwritelock.h" 2 # 65 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h" 2 class QVariant; class QThreadData; class QObjectConnectionListVector; namespace QtSharedPointer { struct ExternalRefCountData; } struct QSignalSpyCallbackSet { typedef void (*BeginCallback)(QObject *caller, int signal_or_method_index, void **argv); typedef void (*EndCallback)(QObject *caller, int signal_or_method_index); BeginCallback signal_begin_callback, slot_begin_callback; EndCallback signal_end_callback, slot_end_callback; }; void __attribute__((visibility("default"))) qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set); extern QSignalSpyCallbackSet __attribute__((visibility("default"))) qt_signal_spy_callback_set; enum { QObjectPrivateVersion = 0x050200 }; class __attribute__((visibility("default"))) QAbstractDeclarativeData { public: static void (*destroyed)(QAbstractDeclarativeData *, QObject *); static void (*destroyed_qml1)(QAbstractDeclarativeData *, QObject *); static void (*parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *); static void (*signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **); static int (*receivers)(QAbstractDeclarativeData *, const QObject *, int); static bool (*isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int); }; struct QAbstractDeclarativeDataImpl : public QAbstractDeclarativeData { quint32 ownedByQml1:1; quint32 unused: 31; }; class __attribute__((visibility("default"))) QObjectPrivate : public QObjectData { inline QObject* q_func() { return static_cast(q_ptr); } inline const QObject* q_func() const { return static_cast(q_ptr); } friend class QObject; public: struct ExtraData { ExtraData() {} QVector userData; QList propertyNames; QList propertyValues; QVector runningTimers; QList > eventFilters; QString objectName; }; typedef void (*StaticMetaCallFunction)(QObject *, QMetaObject::Call, int, void **); struct Connection { QObject *sender; QObject *receiver; union { StaticMetaCallFunction callFunction; QtPrivate::QSlotObjectBase *slotObj; }; Connection *nextConnectionList; Connection *next; Connection **prev; QAtomicPointer argumentTypes; QAtomicInt ref_; ushort method_offset; ushort method_relative; uint signal_index : 27; ushort connectionType : 3; ushort isSlotObject : 1; ushort ownArgumentTypes : 1; Connection() : nextConnectionList(0), ref_(2), ownArgumentTypes(true) { } ~Connection(); int method() const { return method_offset + method_relative; } void ref() { ref_.ref(); } void deref() { if (!ref_.deref()) { ((!(!receiver)) ? qt_assert("!receiver","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h",156) : qt_noop()); delete this; } } }; struct ConnectionList { ConnectionList() : first(0), last(0) {} Connection *first; Connection *last; }; struct Sender { QObject *sender; int signal; int ref; }; QObjectPrivate(int version = QObjectPrivateVersion); virtual ~QObjectPrivate(); void deleteChildren(); void setParent_helper(QObject *); void moveToThread_helper(); void setThreadData_helper(QThreadData *currentData, QThreadData *targetData); void _q_reregisterTimers(void *pointer); bool isSender(const QObject *receiver, const char *signal) const; QObjectList receiverList(const char *signal) const; QObjectList senderList() const; void addConnection(int signal, Connection *c); void cleanConnectionLists(); static inline Sender *setCurrentSender(QObject *receiver, Sender *sender); static inline void resetCurrentSender(QObject *receiver, Sender *currentSender, Sender *previousSender); static QObjectPrivate *get(QObject *o) { return o->d_func(); } int senderSignalIndex() const; int signalIndex(const char *signalName, const QMetaObject **meta = 0) const; inline bool isSignalConnected(uint signalIdx) const; inline void connectNotify(const QMetaMethod &signal); inline void disconnectNotify(const QMetaMethod &signal); template static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type = Qt::AutoConnection); template static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot); static QMetaObject::Connection connectImpl(const QObject *sender, int signal_index, const QObject *receiver, void **slot, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type, const int *types, const QMetaObject *senderMetaObject); static QMetaObject::Connection connect(const QObject *sender, int signal_index, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type); static bool disconnect(const QObject *sender, int signal_index, void **slot); public: ExtraData *extraData; QThreadData *threadData; QObjectConnectionListVector *connectionLists; Connection *senders; Sender *currentSender; mutable quint32 connectedSignals[2]; union { QObject *currentChildBeingDeleted; QAbstractDeclarativeData *declarativeData; }; QAtomicPointer sharedRefcount; }; inline bool QObjectPrivate::isSignalConnected(uint signal_index) const { return signal_index >= sizeof(connectedSignals) * 8 || (connectedSignals[signal_index >> 5] & (1 << (signal_index & 0x1f)) || (declarativeData && QAbstractDeclarativeData::isSignalConnected && QAbstractDeclarativeData::isSignalConnected(declarativeData, q_func(), signal_index)) || qt_signal_spy_callback_set.signal_begin_callback || qt_signal_spy_callback_set.signal_end_callback); } inline QObjectPrivate::Sender *QObjectPrivate::setCurrentSender(QObject *receiver, Sender *sender) { Sender *previousSender = receiver->d_func()->currentSender; receiver->d_func()->currentSender = sender; return previousSender; } inline void QObjectPrivate::resetCurrentSender(QObject *receiver, Sender *currentSender, Sender *previousSender) { if (currentSender->ref == 1) receiver->d_func()->currentSender = previousSender; if (previousSender) previousSender->ref = currentSender->ref; } inline void QObjectPrivate::connectNotify(const QMetaMethod &signal) { q_ptr->connectNotify(signal); } inline void QObjectPrivate::disconnectNotify(const QMetaMethod &signal) { q_ptr->disconnectNotify(signal); } namespace QtPrivate { template class QPrivateSlotObject : public QSlotObjectBase { typedef QtPrivate::FunctionPointer FuncType; Func function; static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) { switch (which) { case Destroy: delete static_cast(this_); break; case Call: FuncType::template call(static_cast(this_)->function, static_cast(QObjectPrivate::get(r)), a); break; case Compare: *ret = *reinterpret_cast(a) == static_cast(this_)->function; break; case NumOperations: ; } } public: explicit QPrivateSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} }; } template inline QMetaObject::Connection QObjectPrivate::connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type) { typedef QtPrivate::FunctionPointer SignalType; typedef QtPrivate::FunctionPointer SlotType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::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 ::value)), "Signal and slot arguments are not compatible."); static_assert(bool((QtPrivate::AreArgumentsCompatible ::value)), "Return type of the slot is not compatible with the return type of the signal."); const int *types = 0; if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) types = QtPrivate::ConnectionTypes::types(); return QObject::connectImpl(sender, reinterpret_cast(&signal), receiverPrivate->q_func(), reinterpret_cast(&slot), new QtPrivate::QPrivateSlotObject::Value, typename SignalType::ReturnType>(slot), type, types, &SignalType::Object::staticMetaObject); } template bool QObjectPrivate::disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object* sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object* receiverPrivate, Func2 slot) { typedef QtPrivate::FunctionPointer SignalType; typedef QtPrivate::FunctionPointer SlotType; static_assert(bool(QtPrivate::HasQ_OBJECT_Macro ::Value), "No Q_OBJECT in the class with the signal"); static_assert(bool((QtPrivate::CheckCompatibleArguments ::value)), "Signal and slot arguments are not compatible."); return QObject::disconnectImpl(sender, reinterpret_cast(&signal), receiverPrivate->q_func(), reinterpret_cast(&slot), &SignalType::Object::staticMetaObject); } template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Connection)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QObjectPrivate::Connection) }; static inline const char *name() { return "QObjectPrivate::Connection"; } }; template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Sender)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QObjectPrivate::Sender) }; static inline const char *name() { return "QObjectPrivate::Sender"; } }; class QSemaphore; class __attribute__((visibility("default"))) QMetaCallEvent : public QEvent { public: QMetaCallEvent(ushort method_offset, ushort method_relative, QObjectPrivate::StaticMetaCallFunction callFunction , const QObject *sender, int signalId, int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0); QMetaCallEvent(QtPrivate::QSlotObjectBase *slotObj, const QObject *sender, int signalId, int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0); ~QMetaCallEvent(); inline int id() const { return method_offset_ + method_relative_; } inline const QObject *sender() const { return sender_; } inline int signalId() const { return signalId_; } inline void **args() const { return args_; } virtual void placeMetaCall(QObject *object); private: QtPrivate::QSlotObjectBase *slotObj_; const QObject *sender_; int signalId_; int nargs_; int *types_; void **args_; QSemaphore *semaphore_; QObjectPrivate::StaticMetaCallFunction callFunction_; ushort method_offset_; ushort method_relative_; }; class QBoolBlocker { QBoolBlocker(const QBoolBlocker &) = delete; QBoolBlocker &operator=(const QBoolBlocker &) = delete; public: explicit inline QBoolBlocker(bool &b, bool value=true):block(b), reset(b){block = value;} inline ~QBoolBlocker(){block = reset; } private: bool █ bool reset; }; void __attribute__((visibility("default"))) qDeleteInEventHandler(QObject *o); struct QAbstractDynamicMetaObject; struct __attribute__((visibility("default"))) QDynamicMetaObjectData { virtual ~QDynamicMetaObjectData() {} virtual void objectDestroyed(QObject *) { delete this; } virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) = 0; virtual int metaCall(QObject *, QMetaObject::Call, int _id, void **) = 0; }; struct __attribute__((visibility("default"))) QAbstractDynamicMetaObject : public QDynamicMetaObjectData, public QMetaObject { virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) { return this; } virtual int createProperty(const char *, const char *) { return -1; } virtual int metaCall(QObject *, QMetaObject::Call c, int _id, void **a) { return metaCall(c, _id, a); } virtual int metaCall(QMetaObject::Call, int _id, void **) { return _id; } }; # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/qobject_p.h" 2 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4value_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 1 # 1 "/usr/include/c++/4.8/cmath" 1 3 # 40 "/usr/include/c++/4.8/cmath" 3 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 1 3 # 45 "/usr/include/c++/4.8/cmath" 2 3 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnumeric.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/global/qnumeric.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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(); # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnumeric.h" 2 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" 2 # 66 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" # 84 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" # 103 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" # 111 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4global_p.h" namespace QV4 { class MemoryManager; struct String; struct Object; struct ObjectPrototype; struct ObjectIterator; struct ExecutionContext; struct ScriptFunction; struct InternalClass; struct Property; struct Value; struct BooleanObject; struct NumberObject; struct StringObject; struct ArrayObject; struct DateObject; struct FunctionObject; struct ErrorObject; struct ArgumentsObject; struct Managed; struct Lookup; struct ExecutionEngine; struct QObjectWrapper; typedef quint64 ReturnedValue; struct CallData; struct ScopedValue; struct ValueRef; template struct Scoped; typedef Scoped ScopedString; typedef Scoped ScopedObject; typedef Scoped ScopedArrayObject; typedef Scoped ScopedFunctionObject; template struct Returned; typedef Returned ReturnedString; typedef Returned ReturnedObject; typedef Returned ReturnedFunctionObject; template struct Referenced; typedef Referenced ManagedRef; typedef Referenced StringRef; typedef Referenced ObjectRef; typedef Referenced ArrayObjectRef; typedef Referenced FunctionObjectRef; namespace Global { enum { ReservedArgumentCount = 6 }; } enum PropertyFlag { Attr_Data = 0, Attr_Accessor = 0x1, Attr_NotWritable = 0x2, Attr_NotEnumerable = 0x4, Attr_NotConfigurable = 0x8, Attr_ReadOnly = Attr_NotWritable|Attr_NotEnumerable|Attr_NotConfigurable, Attr_Invalid = 0xff }; typedef QFlags PropertyFlags;; constexpr inline QFlags operator|(PropertyFlags::enum_type f1, PropertyFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(PropertyFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(PropertyFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }; struct PropertyAttributes { union { uchar m_all; struct { uchar m_flags : 4; uchar m_mask : 4; }; struct { uchar m_type : 1; uchar m_writable : 1; uchar m_enumerable : 1; uchar m_configurable : 1; uchar type_set : 1; uchar writable_set : 1; uchar enumerable_set : 1; uchar configurable_set : 1; }; }; enum Type { Data = 0, Accessor = 1, Generic = 2 }; PropertyAttributes() : m_all(0) {} PropertyAttributes(PropertyFlag f) : m_all(0) { if (f != Attr_Invalid) { setType(f & Attr_Accessor ? Accessor : Data); if (!(f & Attr_Accessor)) setWritable(!(f & Attr_NotWritable)); setEnumerable(!(f & Attr_NotEnumerable)); setConfigurable(!(f & Attr_NotConfigurable)); } } PropertyAttributes(PropertyFlags f) : m_all(0) { if (f != Attr_Invalid) { setType(f & Attr_Accessor ? Accessor : Data); if (!(f & Attr_Accessor)) setWritable(!(f & Attr_NotWritable)); setEnumerable(!(f & Attr_NotEnumerable)); setConfigurable(!(f & Attr_NotConfigurable)); } } PropertyAttributes(const PropertyAttributes &other) : m_all(other.m_all) {} PropertyAttributes & operator=(const PropertyAttributes &other) { m_all = other.m_all; return *this; } void setType(Type t) { m_type = t; type_set = true; } Type type() const { return type_set ? (Type)m_type : Generic; } bool isData() const { return type() == PropertyAttributes::Data || writable_set; } bool isAccessor() const { return type() == PropertyAttributes::Accessor; } bool isGeneric() const { return type() == PropertyAttributes::Generic && !writable_set; } bool hasType() const { return type_set; } bool hasWritable() const { return writable_set; } bool hasConfigurable() const { return configurable_set; } bool hasEnumerable() const { return enumerable_set; } void setWritable(bool b) { m_writable = b; writable_set = true; } void setConfigurable(bool b) { m_configurable = b; configurable_set = true; } void setEnumerable(bool b) { m_enumerable = b; enumerable_set = true; } void resolve() { m_mask = 0xf; if (m_type == Accessor) { m_writable = false; writable_set = false; } } bool isWritable() const { return m_type != Data || m_writable; } bool isEnumerable() const { return m_enumerable; } bool isConfigurable() const { return m_configurable; } void clearType() { m_type = Data; type_set = false; } void clearWritable() { m_writable = false; writable_set = false; } void clearEnumerable() { m_enumerable = false; enumerable_set = false; } void clearConfigurable() { m_configurable = false; configurable_set = false; } void clear() { m_all = 0; } bool isEmpty() const { return !m_all; } uint flags() const { return m_flags; } bool operator==(PropertyAttributes other) { return m_all == other.m_all; } bool operator!=(PropertyAttributes other) { return m_all != other.m_all; } }; struct StackFrame { QString source; QString function; int line; int column; }; typedef QVector StackTrace; } template< > class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QV4::PropertyAttributes)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QV4::PropertyAttributes) }; static inline const char *name() { return "QV4::PropertyAttributes"; } }; # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 2 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdebug.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qalgorithms.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlist.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmap.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtextstream.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qiodevice.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qchar.h" 1 # 48 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qlocale.h" 1 # 49 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 1 # 50 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qtextstream.h" 2 class QTextCodec; class QTextDecoder; class QTextStreamPrivate; class __attribute__((visibility("default"))) QTextStream { inline QTextStreamPrivate* d_func() { return reinterpret_cast(qGetPtrHelper(d_ptr)); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast(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 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); 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 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; QScopedPointer d_ptr; }; constexpr inline QFlags operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QTextStream::NumberFlags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QTextStream::NumberFlags::enum_type f1, int f2) { 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: QTextStreamManipulator(QTSMFI m, int a) { mf = m; mc = 0; arg = a; } QTextStreamManipulator(QTSMFC m, QChar c) { mf = 0; mc = m; ch = c; arg = -1; } 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); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qtextstream.h" 2 # 51 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 52 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 53 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qset.h" 1 # 54 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcontiguouscache.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 43 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/thread/qatomic.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qatomic.h" 2 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h" 2 # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 1 3 # 166 "/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h" 3 # 47 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../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 struct QContiguousCacheTypedData: private QContiguousCacheData { T array[1]; static inline void freeData(QContiguousCacheTypedData *data) { QContiguousCacheData::freeData(data); } }; template class QContiguousCache { typedef QContiguousCacheTypedData Data; union { QContiguousCacheData *d; QContiguousCacheTypedData *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 &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 &operator=(const QContiguousCache &other); inline QContiguousCache &operator=(QContiguousCache &&other) { qSwap(d, other.d); return *this; } inline void swap(QContiguousCache &other) { qSwap(d, other.d); } bool operator==(const QContiguousCache &other) const; inline bool operator!=(const QContiguousCache &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 { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",141) : qt_noop()); return p->array[d->start]; } inline const T &last() const { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",142) : qt_noop()); return p->array[(d->start + d->count -1) % d->alloc]; } inline T &first() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",143) : qt_noop()); detach(); return p->array[d->start]; } inline T &last() { ((!(!isEmpty())) ? qt_assert("!isEmpty()","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",144) : qt_noop()); 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 < 2147483647 - 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(&(reinterpret_cast(this))->array[1]) - reinterpret_cast(this); } int alignOfTypedData() const { return qMax(sizeof(void*), __alignof__(Data)); } }; template void QContiguousCache::detach_helper() { union { QContiguousCacheData *d; QContiguousCacheTypedData *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::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 void QContiguousCache::setCapacity(int asize) { if (asize == d->alloc) return; detach(); union { QContiguousCacheData *d; QContiguousCacheTypedData *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::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 void QContiguousCache::clear() { if (d->ref.load() == 1) { if (QTypeInfo::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 *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 inline QContiguousCacheData *QContiguousCache::allocateData(int aalloc) { return QContiguousCacheData::allocateData(sizeOfTypedData() + (aalloc - 1) * sizeof(T), alignOfTypedData()); } template QContiguousCache::QContiguousCache(int cap) { d = allocateData(cap); d->ref.store(1); d->alloc = cap; d->count = d->start = d->offset = 0; d->sharable = true; } template QContiguousCache &QContiguousCache::operator=(const QContiguousCache &other) { other.d->ref.ref(); if (!d->ref.deref()) freeData(d); d = other.d; if (!d->sharable) detach_helper(); return *this; } template bool QContiguousCache::operator==(const QContiguousCache &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 void QContiguousCache::freeData(Data *x) { if (QTypeInfo::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 void QContiguousCache::append(const T &value) { if (!d->alloc) return; detach(); if (QTypeInfo::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 void QContiguousCache::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::isComplex) new (p->array + d->start) T(value); else p->array[d->start] = value; } template void QContiguousCache::insert(int pos, const T &value) { ((!(pos >= 0 && pos < 2147483647)) ? qt_assert_x("QContiguousCache::insert", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",389) : qt_noop()); if (!d->alloc) return; detach(); if (containsIndex(pos)) { if (QTypeInfo::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::isComplex) new (p->array + d->start) T(value); else p->array[d->start] = value; } } template inline const T &QContiguousCache::at(int pos) const { ((!(pos >= d->offset && pos - d->offset < d->count)) ? qt_assert_x("QContiguousCache::at", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",419) : qt_noop()); return p->array[pos % d->alloc]; } template inline const T &QContiguousCache::operator[](int pos) const { ((!(pos >= d->offset && pos - d->offset < d->count)) ? qt_assert_x("QContiguousCache::at", "index out of range","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",422) : qt_noop()); return p->array[pos % d->alloc]; } template inline T &QContiguousCache::operator[](int pos) { detach(); if (!containsIndex(pos)) insert(pos, T()); return p->array[pos % d->alloc]; } template inline void QContiguousCache::removeFirst() { ((!(d->count > 0)) ? qt_assert("d->count > 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",436) : qt_noop()); detach(); d->count--; if (QTypeInfo::isComplex) (p->array + d->start)->~T(); d->start = (d->start + 1) % d->alloc; d->offset++; } template inline void QContiguousCache::removeLast() { ((!(d->count > 0)) ? qt_assert("d->count > 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qcontiguouscache.h",448) : qt_noop()); detach(); d->count--; if (QTypeInfo::isComplex) (p->array + (d->start + d->count) % d->alloc)->~T(); } template inline T QContiguousCache::takeFirst() { T t = first(); removeFirst(); return t; } template inline T QContiguousCache::takeLast() { T t = last(); removeLast(); return t; } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qcontiguouscache.h" 2 # 55 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/io/qdebug.h" 2 class __attribute__((visibility("default"))) QDebug { friend class QMessageLogger; friend class QDebugStateSaverPrivate; struct Stream { Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), space(true), message_output(false) {} Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), space(true), message_output(false) {} Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), space(true), message_output(true) {} QTextStream ts; QString buffer; int ref; QtMsgType type; bool space; bool message_output; QMessageLogContext context; } *stream; 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); inline ~QDebug() { if (!--stream->ref) { if(stream->message_output) { if (true) { qt_message_output(stream->type, stream->context, stream->buffer); } else { } } delete stream; } } inline void swap(QDebug &other) { qSwap(stream, other.stream); } 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; } bool autoInsertSpaces() const { return stream->space; } void setAutoInsertSpaces(bool b) { stream->space = b; } inline QDebug &operator<<(QChar t) { stream->ts << '\'' << t << '\''; 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<<(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 << QString::number(t); return maybeSpace(); } inline QDebug &operator<<(quint64 t) { stream->ts << QString::number(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) { stream->ts << '\"' << t << '\"'; return maybeSpace(); } inline QDebug &operator<<(const QStringRef & t) { return operator<<(t.toString()); } inline QDebug &operator<<(QLatin1String t) { stream->ts << '\"' << t << '\"'; return maybeSpace(); } inline QDebug &operator<<(const QByteArray & t) { stream->ts << '\"' << t << '\"'; return maybeSpace(); } inline QDebug &operator<<(const void * t) { stream->ts << t; 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 { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QDebug)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QDebug) }; static inline const char *name() { return "QDebug"; } }; template < > inline void qSwap(QDebug &value1, QDebug &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QDebug>(::QDebug &value1, ::QDebug &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 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; } template 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; } template inline QDebug operator<<(QDebug debug, const QList &list) { debug.nospace() << '('; for (typename QList::size_type i = 0; i < list.count(); ++i) { if (i) debug << ", "; debug << list.at(i); } debug << ')'; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QVector &vec) { debug.nospace() << "QVector"; return operator<<(debug, vec.toList()); } template inline QDebug operator<<(QDebug debug, const QMap &map) { debug.nospace() << "QMap("; for (typename QMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) { debug << '(' << it.key() << ", " << it.value() << ')'; } debug << ')'; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QHash &hash) { debug.nospace() << "QHash("; for (typename QHash::const_iterator it = hash.constBegin(); it != hash.constEnd(); ++it) debug << '(' << it.key() << ", " << it.value() << ')'; debug << ')'; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QPair &pair) { debug.nospace() << "QPair(" << pair.first << ',' << pair.second << ')'; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QSet &set) { debug.nospace() << "QSet"; return operator<<(debug, set.toList()); } template inline QDebug operator<<(QDebug debug, const QContiguousCache &cache) { debug.nospace() << "QContiguousCache("; for (int i = cache.firstIndex(); i <= cache.lastIndex(); ++i) { debug << cache[i]; if (i != cache.lastIndex()) debug << ", "; } debug << ')'; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QFlags &flags) { debug.nospace() << "QFlags("; bool needSeparator = false; for (uint i = 0; i < sizeof(T) * 8; ++i) { if (flags.testFlag(T(1 << i))) { if (needSeparator) debug.nospace() << '|'; else needSeparator = true; debug.nospace() << "0x" << QByteArray::number(typename QFlags::Int(1) << i, 16).constData(); } } debug << ')'; return debug.space(); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdebug.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 2 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h" 2 namespace QV4 { typedef uint Bool; template struct Returned : private T { static Returned *create(T *t) { return static_cast *>(t); } T *getPointer() { return this; } template static T *getPointer(Returned *x) { return x->getPointer(); } template Returned *as() { return Returned::create(Returned::getPointer(this)); } using T::asReturnedValue; }; struct __attribute__((visibility("default"))) Value { union { quint64 val; Managed *m; Object *o; String *s; struct { union { uint uint_32; int int_32; }; uint tag; }; }; # 147 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h" static const quint64 NaNEncodeMask = 0xffff800000000000ll; static const quint64 IsInt32Mask = 0x0002000000000000ll; static const quint64 IsDoubleMask = 0xfffc000000000000ll; static const quint64 IsNumberMask = IsInt32Mask|IsDoubleMask; static const quint64 IsNullOrUndefinedMask = 0x0000800000000000ll; static const quint64 IsNullOrBooleanMask = 0x0001000000000000ll; static const quint64 IsConvertibleToIntMask = IsInt32Mask|IsNullOrBooleanMask; enum Masks { NaN_Mask = 0x7ff80000, Type_Mask = 0xffff8000, IsDouble_Mask = 0xfffc0000, Immediate_Mask = 0x00018000, IsNullOrUndefined_Mask = 0x00008000, IsNullOrBoolean_Mask = 0x00010000, Tag_Shift = 32 }; enum ValueType { Undefined_Type = IsNullOrUndefined_Mask, Null_Type = IsNullOrUndefined_Mask|IsNullOrBoolean_Mask, Boolean_Type = IsNullOrBoolean_Mask, Integer_Type = 0x20000|IsNullOrBoolean_Mask, Managed_Type = 0, Empty_Type = Undefined_Type | 0x4000 }; enum { IsDouble_Shift = 64-14, IsNumber_Shift = 64-15, IsConvertibleToInt_Shift = 64-16, IsManaged_Shift = 64-17 }; enum ValueTypeInternal { _Null_Type = Null_Type, _Boolean_Type = Boolean_Type, _Integer_Type = Integer_Type }; inline unsigned type() const { return tag & Type_Mask; } inline bool isEmpty() const { return tag == Empty_Type; } inline bool isUndefined() const { return tag == Undefined_Type; } inline bool isNull() const { return tag == _Null_Type; } inline bool isBoolean() const { return tag == _Boolean_Type; } inline bool isInteger() const { return (val >> IsNumber_Shift) == 1; } inline bool isDouble() const { return (val >> IsDouble_Shift); } inline bool isNumber() const { return (val >> IsNumber_Shift); } inline bool isManaged() const { return !(val >> IsManaged_Shift); } inline bool isNullOrUndefined() const { return ((val >> IsManaged_Shift) & ~2) == 1; } inline bool integerCompatible() const { return ((val >> IsConvertibleToInt_Shift) & ~2) == 1; } static inline bool integerCompatible(Value a, Value b) { return a.integerCompatible() && b.integerCompatible(); } static inline bool bothDouble(Value a, Value b) { return a.isDouble() && b.isDouble(); } double doubleValue() const { ((!(isDouble())) ? qt_assert("isDouble()","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h",211) : qt_noop()); union { quint64 i; double d; } v; v.i = val ^ NaNEncodeMask; return v.d; } void setDouble(double d) { union { quint64 i; double d; } v; v.d = d; val = v.i ^ NaNEncodeMask; ((!(isDouble())) ? qt_assert("isDouble()","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h",226) : qt_noop()); } bool isNaN() const { return (tag & 0x7fff8000) == 0x00078000; } # 246 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_def_p.h" inline bool isString() const; inline bool isObject() const; inline bool isInt32() { if (tag == _Integer_Type) return true; if (isDouble()) { double d = doubleValue(); int i = (int)d; if (i == d) { int_32 = i; tag = _Integer_Type; return true; } } return false; } double asDouble() const { if (tag == _Integer_Type) return int_32; return doubleValue(); } bool booleanValue() const { return int_32; } int integerValue() const { return int_32; } String *stringValue() const { return s; } Object *objectValue() const { return o; } Managed *managed() const { return m; } quint64 rawValue() const { return val; } static inline Value fromManaged(Managed *o); int toUInt16() const; inline int toInt32() const; inline unsigned int toUInt32() const; inline bool toBoolean() const; double toInteger() const; inline double toNumber() const; double toNumberImpl() const; QString toQStringNoThrow() const; QString toQString() const; String *toString(ExecutionContext *ctx) const; Object *toObject(ExecutionContext *ctx) const; inline bool isPrimitive() const; inline bool tryIntegerConversion() { bool b = integerCompatible(); if (b) tag = _Integer_Type; return b; } inline String *asString() const; inline Managed *asManaged() const; inline Object *asObject() const; inline FunctionObject *asFunctionObject() const; inline NumberObject *asNumberObject() const; inline StringObject *asStringObject() const; inline DateObject *asDateObject() const; inline ArrayObject *asArrayObject() const; inline ErrorObject *asErrorObject() const; template inline T *as() const; inline uint asArrayIndex() const; inline uint asArrayLength(bool *ok) const; inline ExecutionEngine *engine() const; ReturnedValue asReturnedValue() const { return val; } static Value fromReturnedValue(ReturnedValue val) { Value v; v.val = val; return v; } Value &operator=(ReturnedValue v) { val = v; return *this; } template inline Value &operator=(Returned *t); bool sameValue(Value other) const; inline void mark(ExecutionEngine *e) const; }; inline Managed *Value::asManaged() const { if (isManaged()) return managed(); return 0; } inline String *Value::asString() const { if (isString()) return stringValue(); return 0; } struct __attribute__((visibility("default"))) Primitive : public Value { inline static Primitive emptyValue(); static inline Primitive fromBoolean(bool b); static inline Primitive fromInt32(int i); inline static Primitive undefinedValue(); static inline Primitive nullValue(); static inline Primitive fromDouble(double d); static inline Primitive fromUInt32(uint i); static double toInteger(double fromNumber); static int toInt32(double value); static unsigned int toUInt32(double value); inline operator ValueRef(); Value asValue() const { return *this; } }; inline Primitive Primitive::undefinedValue() { Primitive v; v.val = quint64(Undefined_Type) << Tag_Shift; return v; } inline Primitive Primitive::emptyValue() { Primitive v; v.tag = Value::Empty_Type; v.uint_32 = 0; return v; } inline Value Value::fromManaged(Managed *m) { if (!m) return QV4::Primitive::undefinedValue(); Value v; v.m = m; return v; } struct SafeValue : public Value { SafeValue &operator =(const ScopedValue &v); template SafeValue &operator=(Returned *t); SafeValue &operator=(ReturnedValue v) { val = v; return *this; } template SafeValue &operator=(T *t) { val = Value::fromManaged(t).val; return *this; } template SafeValue &operator=(const Scoped &t); SafeValue &operator=(const ValueRef v); SafeValue &operator=(const Value &v) { val = v.val; return *this; } template inline Returned *as(); template inline Referenced asRef(); }; template struct Safe : public SafeValue { template Safe &operator =(X *x) { val = Value::fromManaged(x).val; } Safe &operator =(T *t); Safe &operator =(const Scoped &v); Safe &operator =(const Referenced &v); Safe &operator =(Returned *t); Safe &operator =(const Safe &t); bool operator!() const { return !managed(); } T *operator->() { return static_cast(managed()); } const T *operator->() const { return static_cast(managed()); } T *getPointer() const { return static_cast(managed()); } Returned *ret() const; void mark(ExecutionEngine *e) { if (managed()) managed()->mark(e); } }; typedef Safe SafeString; typedef Safe SafeObject; template T *value_cast(const Value &v) { return v.as(); } template ReturnedValue value_convert(ExecutionContext *ctx, const Value &v); } # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" 2 namespace QV4 { template inline int qYouForgotTheQ_MANAGED_Macro(T, T) { return 0; } template inline void qYouForgotTheQ_MANAGED_Macro(T1, T2) {} # 71 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" struct GCDeletable { GCDeletable() : next(0), lastCall(false) {} virtual ~GCDeletable() {} GCDeletable *next; bool lastCall; }; struct ManagedVTable { ReturnedValue (*call)(Managed *, CallData *data); ReturnedValue (*construct)(Managed *, CallData *data); void (*markObjects)(Managed *, ExecutionEngine *e); void (*destroy)(Managed *); void (*collectDeletables)(Managed *, GCDeletable **deletable); bool (*hasInstance)(Managed *, const ValueRef value); ReturnedValue (*get)(Managed *, const StringRef name, bool *hasProperty); ReturnedValue (*getIndexed)(Managed *, uint index, bool *hasProperty); void (*put)(Managed *, const StringRef name, const ValueRef value); void (*putIndexed)(Managed *, uint index, const ValueRef value); PropertyAttributes (*query)(const Managed *, StringRef name); PropertyAttributes (*queryIndexed)(const Managed *, uint index); bool (*deleteProperty)(Managed *m, const StringRef name); bool (*deleteIndexedProperty)(Managed *m, uint index); ReturnedValue (*getLookup)(Managed *m, Lookup *l); void (*setLookup)(Managed *m, Lookup *l, const ValueRef v); bool (*isEqualTo)(Managed *m, Managed *other); Property *(*advanceIterator)(Managed *m, ObjectIterator *it, StringRef name, uint *index, PropertyAttributes *attributes); const char *className; }; # 126 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" # 150 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4managed_p.h" struct __attribute__((visibility("default"))) Managed { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } private: void *operator new(size_t); Managed(const Managed &other); void operator = (const Managed &other); protected: Managed(InternalClass *internal) : _data(0), vtbl(&static_vtbl), internalClass(internal) { inUse = 1; extensible = 1; } public: void *operator new(size_t size, MemoryManager *mm); void operator delete(void *ptr); void operator delete(void *ptr, MemoryManager *mm); inline void mark(QV4::ExecutionEngine *engine); enum Type { Type_Invalid, Type_String, Type_Object, Type_ArrayObject, Type_FunctionObject, Type_BooleanObject, Type_NumberObject, Type_StringObject, Type_DateObject, Type_RegExpObject, Type_ErrorObject, Type_ArgumentsObject, Type_JSONObject, Type_MathObject, Type_ForeachIteratorObject, Type_RegExp, Type_QmlSequence }; ExecutionEngine *engine() const; template T *as() { if (!this) return 0; reinterpret_cast(this)->qt_check_for_QMANAGED_macro(*reinterpret_cast(this)); return vtbl == &T::static_vtbl ? static_cast(this) : 0; } template const T *as() const { if (!this) return 0; reinterpret_cast(this)->qt_check_for_QMANAGED_macro(*reinterpret_cast(const_cast(this))); return vtbl == &T::static_vtbl ? static_cast(this) : 0; } String *asString() { return type == Type_String ? reinterpret_cast(this) : 0; } Object *asObject() { return type != Type_String ? reinterpret_cast(this) : 0; } ArrayObject *asArrayObject() { return type == Type_ArrayObject ? reinterpret_cast(this) : 0; } FunctionObject *asFunctionObject() { return type == Type_FunctionObject ? reinterpret_cast(this) : 0; } BooleanObject *asBooleanObject() { return type == Type_BooleanObject ? reinterpret_cast(this) : 0; } NumberObject *asNumberObject() { return type == Type_NumberObject ? reinterpret_cast(this) : 0; } StringObject *asStringObject() { return type == Type_StringObject ? reinterpret_cast(this) : 0; } DateObject *asDateObject() { return type == Type_DateObject ? reinterpret_cast(this) : 0; } ErrorObject *asErrorObject() { return type == Type_ErrorObject ? reinterpret_cast(this) : 0; } ArgumentsObject *asArgumentsObject() { return type == Type_ArgumentsObject ? reinterpret_cast(this) : 0; } bool isListType() const { return type == Type_QmlSequence; } bool isArrayObject() const { return type == Type_ArrayObject; } bool isStringObject() const { return type == Type_StringObject; } QString className() const; Managed **nextFreeRef() { return reinterpret_cast(this); } Managed *nextFree() { return *reinterpret_cast(this); } void setNextFree(Managed *m) { *reinterpret_cast(this) = m; } bool hasInstance(const ValueRef v); ReturnedValue construct(CallData *d); ReturnedValue call(CallData *d); ReturnedValue get(const StringRef name, bool *hasProperty = 0); ReturnedValue getIndexed(uint index, bool *hasProperty = 0); void put(const StringRef name, const ValueRef value); void putIndexed(uint index, const ValueRef value); PropertyAttributes query(StringRef name) const; PropertyAttributes queryIndexed(uint index) const { return vtbl->queryIndexed(this, index); } bool deleteProperty(const StringRef name); bool deleteIndexedProperty(uint index) { return vtbl->deleteIndexedProperty(this, index); } ReturnedValue getLookup(Lookup *l) { return vtbl->getLookup(this, l); } void setLookup(Lookup *l, const ValueRef v); bool isEqualTo(Managed *other) { return vtbl->isEqualTo(this, other); } Property *advanceIterator(ObjectIterator *it, StringRef name, uint *index, PropertyAttributes *attributes); static void destroy(Managed *that) { that->_data = 0; } static bool hasInstance(Managed *that, const ValueRef value); static ReturnedValue construct(Managed *m, CallData *d); static ReturnedValue call(Managed *m, CallData *); static ReturnedValue getLookup(Managed *m, Lookup *); static void setLookup(Managed *m, Lookup *l, const ValueRef v); static bool isEqualTo(Managed *m, Managed *other); uint internalType() const { return type; } ReturnedValue asReturnedValue() { return Value::fromManaged(this).asReturnedValue(); } enum { SimpleArray = 1 }; union { uint _data; struct { uchar markBit : 1; uchar inUse : 1; uchar extensible : 1; uchar isNonStrictArgumentsObject : 1; uchar needsActivation : 1; uchar strictMode : 1; uchar bindingKeyFlag : 1; uchar hasAccessorProperty : 1; uchar type; mutable uchar subtype; uchar flags; }; }; protected: const ManagedVTable *vtbl; public: InternalClass *internalClass; private: friend class MemoryManager; friend struct Identifiers; friend struct ObjectIterator; }; template<> inline Managed *value_cast(const Value &v) { return v.asManaged(); } template inline T *managed_cast(Managed *m) { return m->as(); } template<> inline String *managed_cast(Managed *m) { return m->asString(); } template<> inline Object *managed_cast(Managed *m) { return m->asObject(); } template<> inline FunctionObject *managed_cast(Managed *m) { return m->asFunctionObject(); } inline ReturnedValue Managed::construct(CallData *d) { return vtbl->construct(this, d); } inline ReturnedValue Managed::call(CallData *d) { return vtbl->call(this, d); } } # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h" 2 namespace QV4 { struct ExecutionEngine; struct Identifier; struct __attribute__((visibility("default"))) String : public Managed { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } enum StringType { StringType_Unknown, StringType_Regular, StringType_UInt, StringType_ArrayIndex }; String() : Managed(0), _text(QStringData::sharedNull()), identifier(0) , stringHash((2147483647 * 2U + 1U)), largestSubLength(0), len(0) { vtbl = &static_vtbl; type = Type_String; subtype = StringType_Unknown; } String(ExecutionEngine *engine, const QString &text); String(ExecutionEngine *engine, String *l, String *n); ~String() { if (!largestSubLength && !_text->ref.deref()) QStringData::deallocate(_text); _data = 0; } bool equals(const StringRef other) const; inline bool isEqualTo(const String *other) const { if (this == other) return true; if (hashValue() != other->hashValue()) return false; ((!(!largestSubLength)) ? qt_assert("!largestSubLength","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h",81) : qt_noop()); if (identifier && identifier == other->identifier) return true; if (subtype >= StringType_UInt && subtype == other->subtype) return true; return toQString() == other->toQString(); } inline bool compare(const String *other) { return toQString() < other->toQString(); } inline QString toQString() const { if (largestSubLength) simplifyString(); QStringDataPtr ptr = { _text }; _text->ref.ref(); return QString(ptr); } void simplifyString() const; inline unsigned hashValue() const { if (subtype == StringType_Unknown) createHashValue(); ((!(!largestSubLength)) ? qt_assert("!largestSubLength","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h",106) : qt_noop()); return stringHash; } uint asArrayIndex() const { if (subtype == StringType_Unknown) createHashValue(); ((!(!largestSubLength)) ? qt_assert("!largestSubLength","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h",113) : qt_noop()); if (subtype == StringType_ArrayIndex) return stringHash; return (2147483647 * 2U + 1U); } uint toUInt(bool *ok) const; void makeIdentifier() const { if (identifier) return; makeIdentifierImpl(); } void makeIdentifierImpl() const; void createHashValue() const; static uint createHashValue(const QChar *ch, int length); static uint createHashValue(const char *ch, int length); bool startsWithUpper() const { const String *l = this; while (l->largestSubLength) l = l->left; return l->_text->size && QChar::isUpper(l->_text->data()[0]); } int length() const { ((!((largestSubLength && (len == left->len + right->len)) || len == (uint)_text->size)) ? qt_assert("(largestSubLength && (len == left->len + right->len)) || len == (uint)_text->size","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4string_p.h",139) : qt_noop()); return len; } union { mutable QStringData *_text; mutable String *left; }; union { mutable Identifier *identifier; mutable String *right; }; mutable uint stringHash; mutable uint largestSubLength; uint len; protected: static void destroy(Managed *); static void markObjects(Managed *that, ExecutionEngine *e); static ReturnedValue get(Managed *m, const StringRef name, bool *hasProperty); static ReturnedValue getIndexed(Managed *m, uint index, bool *hasProperty); static void put(Managed *m, const StringRef name, const ValueRef value); static void putIndexed(Managed *m, uint index, const ValueRef value); static PropertyAttributes query(const Managed *m, StringRef name); static PropertyAttributes queryIndexed(const Managed *m, uint index); static bool deleteProperty(Managed *, const StringRef); static bool deleteIndexedProperty(Managed *m, uint index); static bool isEqualTo(Managed *that, Managed *o); private: QChar *recursiveAppend(QChar *ch) const; }; template<> inline String *value_cast(const Value &v) { return v.asString(); } template<> inline ReturnedValue value_convert(ExecutionContext *ctx, const Value &v) { return v.toString(ctx)->asReturnedValue(); } } # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdebug.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 2 # 51 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4isel_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4global_p.h" 1 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4global_p.h" 1 # 56 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmljsmemorypool_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsglobal_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsglobal_p.h" 2 # 70 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsglobal_p.h" # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qshareddata.h" 1 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdebug.h" 1 # 61 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 2 # 1 "/usr/include/c++/4.8/cstring" 1 3 # 40 "/usr/include/c++/4.8/cstring" 3 3 # 70 "/usr/include/c++/4.8/cstring" 3 namespace std __attribute__ ((__visibility__ ("default"))) { using ::memchr; using ::memcmp; using ::memcpy; using ::memmove; using ::memset; using ::strcat; using ::strcmp; using ::strcoll; using ::strcpy; using ::strcspn; using ::strerror; using ::strlen; using ::strncat; using ::strncmp; using ::strncpy; using ::strspn; using ::strtok; using ::strxfrm; using ::strchr; using ::strpbrk; using ::strrchr; using ::strstr; # 119 "/usr/include/c++/4.8/cstring" 3 } # 63 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h" 2 namespace QQmlJS { class MemoryPool : public QSharedData { MemoryPool(const MemoryPool &other); void operator =(const MemoryPool &other); public: MemoryPool() : _blocks(0), _allocatedBlocks(0), _blockCount(-1), _ptr(0), _end(0) { } ~MemoryPool() { if (_blocks) { for (int i = 0; i < _allocatedBlocks; ++i) { if (char *b = _blocks[i]) free(b); } free(_blocks); } } inline void *allocate(size_t size) { size = (size + 7) & ~7; if (_ptr && (_ptr + size < _end)) { void *addr = _ptr; _ptr += size; return addr; } return allocate_helper(size); } void reset() { _blockCount = -1; _ptr = _end = 0; } private: void *allocate_helper(size_t size) { ((!(size < BLOCK_SIZE)) ? qt_assert("size < BLOCK_SIZE","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsmemorypool_p.h",114) : qt_noop()); if (++_blockCount == _allocatedBlocks) { if (! _allocatedBlocks) _allocatedBlocks = DEFAULT_BLOCK_COUNT; else _allocatedBlocks *= 2; _blocks = (char **) realloc(_blocks, sizeof(char *) * _allocatedBlocks); for (int index = _blockCount; index < _allocatedBlocks; ++index) _blocks[index] = 0; } char *&block = _blocks[_blockCount]; if (! block) block = (char *) malloc(BLOCK_SIZE); _ptr = block; _end = _ptr + BLOCK_SIZE; void *addr = _ptr; _ptr += size; return addr; } private: char **_blocks; int _allocatedBlocks; int _blockCount; char *_ptr; char *_end; enum { BLOCK_SIZE = 8 * 1024, DEFAULT_BLOCK_COUNT = 8 }; }; class Managed { Managed(const Managed &other); void operator = (const Managed &other); public: Managed() {} ~Managed() {} void *operator new(size_t size, MemoryPool *pool) { return pool->allocate(size); } void operator delete(void *) {} void operator delete(void *, MemoryPool *) {} }; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qqmljsmemorypool_p.h" 2 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmljsastfwd_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsastfwd_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/parser/qqmljsastfwd_p.h" 2 namespace QQmlJS { namespace AST { class SourceLocation { public: SourceLocation(quint32 offset = 0, quint32 length = 0, quint32 line = 0, quint32 column = 0) : offset(offset), length(length), startLine(line), startColumn(column) { } bool isValid() const { return length != 0; } quint32 begin() const { return offset; } quint32 end() const { return offset + length; } quint32 offset; quint32 length; quint32 startLine; quint32 startColumn; }; class Visitor; class Node; class ExpressionNode; class Statement; class ThisExpression; class IdentifierExpression; class NullExpression; class TrueLiteral; class FalseLiteral; class NumericLiteral; class StringLiteral; class RegExpLiteral; class ArrayLiteral; class ObjectLiteral; class ElementList; class Elision; class PropertyAssignmentList; class PropertyGetterSetter; class PropertyNameAndValue; class PropertyName; class IdentifierPropertyName; class StringLiteralPropertyName; class NumericLiteralPropertyName; class ArrayMemberExpression; class FieldMemberExpression; class NewMemberExpression; class NewExpression; class CallExpression; class ArgumentList; class PostIncrementExpression; class PostDecrementExpression; class DeleteExpression; class VoidExpression; class TypeOfExpression; class PreIncrementExpression; class PreDecrementExpression; class UnaryPlusExpression; class UnaryMinusExpression; class TildeExpression; class NotExpression; class BinaryExpression; class ConditionalExpression; class Expression; class Block; class StatementList; class VariableStatement; class VariableDeclarationList; class VariableDeclaration; class EmptyStatement; class ExpressionStatement; class IfStatement; class DoWhileStatement; class WhileStatement; class ForStatement; class LocalForStatement; class ForEachStatement; class LocalForEachStatement; class ContinueStatement; class BreakStatement; class ReturnStatement; class WithStatement; class SwitchStatement; class CaseBlock; class CaseClauses; class CaseClause; class DefaultClause; class LabelledStatement; class ThrowStatement; class TryStatement; class Catch; class Finally; class FunctionDeclaration; class FunctionExpression; class FormalParameterList; class FunctionBody; class Program; class SourceElements; class SourceElement; class FunctionSourceElement; class StatementSourceElement; class DebuggerStatement; class NestedExpression; class UiProgram; class UiPragma; class UiImport; class UiPublicMember; class UiParameterList; class UiObjectDefinition; class UiObjectInitializer; class UiObjectBinding; class UiScriptBinding; class UiSourceElement; class UiArrayBinding; class UiObjectMember; class UiObjectMemberList; class UiArrayMemberList; class UiQualifiedId; class UiQualifiedPragmaId; class UiHeaderItemList; } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qqmljsastfwd_p.h" 2 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 2 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 61 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QBitArray" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbitarray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 46 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h" 2 class QBitRef; class __attribute__((visibility("default"))) QBitArray { friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QBitArray &); friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QBitArray &); friend __attribute__((visibility("default"))) uint qHash(const QBitArray &key, uint seed) noexcept; QByteArray d; public: inline QBitArray() {} explicit QBitArray(int size, bool val = false); QBitArray(const QBitArray &other) : d(other.d) {} inline QBitArray &operator=(const QBitArray &other) { d = other.d; return *this; } inline QBitArray(QBitArray &&other) : d(std::move(other.d)) {} inline QBitArray &operator=(QBitArray &&other) { qSwap(d, other.d); return *this; } inline void swap(QBitArray &other) { qSwap(d, other.d); } inline int size() const { return (d.size() << 3) - *d.constData(); } inline int count() const { return (d.size() << 3) - *d.constData(); } int count(bool on) const; inline bool isEmpty() const { return d.isEmpty(); } inline bool isNull() const { return d.isNull(); } void resize(int size); inline void detach() { d.detach(); } inline bool isDetached() const { return d.isDetached(); } inline void clear() { d.clear(); } bool testBit(int i) const; void setBit(int i); void setBit(int i, bool val); void clearBit(int i); bool toggleBit(int i); bool at(int i) const; QBitRef operator[](int i); bool operator[](int i) const; QBitRef operator[](uint i); bool operator[](uint i) const; QBitArray& operator&=(const QBitArray &); QBitArray& operator|=(const QBitArray &); QBitArray& operator^=(const QBitArray &); QBitArray operator~() const; inline bool operator==(const QBitArray& other) const { return d == other.d; } inline bool operator!=(const QBitArray& other) const { return d != other.d; } inline bool fill(bool val, int size = -1); void fill(bool val, int first, int last); inline void truncate(int pos) { if (pos < size()) resize(pos); } public: typedef QByteArray::DataPtr DataPtr; inline DataPtr &data_ptr() { return d.data_ptr(); } }; inline bool QBitArray::fill(bool aval, int asize) { *this = QBitArray((asize < 0 ? this->size() : asize), aval); return true; } __attribute__((visibility("default"))) QBitArray operator&(const QBitArray &, const QBitArray &); __attribute__((visibility("default"))) QBitArray operator|(const QBitArray &, const QBitArray &); __attribute__((visibility("default"))) QBitArray operator^(const QBitArray &, const QBitArray &); inline bool QBitArray::testBit(int i) const { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h",122) : qt_noop()); return (*(reinterpret_cast(d.constData())+1+(i>>3)) & (1 << (i & 7))) != 0; } inline void QBitArray::setBit(int i) { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h",126) : qt_noop()); *(reinterpret_cast(d.data())+1+(i>>3)) |= uchar(1 << (i & 7)); } inline void QBitArray::clearBit(int i) { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h",130) : qt_noop()); *(reinterpret_cast(d.data())+1+(i>>3)) &= ~uchar(1 << (i & 7)); } inline void QBitArray::setBit(int i, bool val) { if (val) setBit(i); else clearBit(i); } inline bool QBitArray::toggleBit(int i) { ((!(uint(i) < uint(size()))) ? qt_assert("uint(i) < uint(size())","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h",137) : qt_noop()); uchar b = uchar(1<<(i&7)); uchar* p = reinterpret_cast(d.data())+1+(i>>3); uchar c = uchar(*p&b); *p^=b; return c!=0; } inline bool QBitArray::operator[](int i) const { return testBit(i); } inline bool QBitArray::operator[](uint i) const { return testBit(i); } inline bool QBitArray::at(int i) const { return testBit(i); } class __attribute__((visibility("default"))) QBitRef { private: QBitArray& a; int i; inline QBitRef(QBitArray& array, int idx) : a(array), i(idx) {} friend class QBitArray; public: inline operator bool() const { return a.testBit(i); } inline bool operator!() const { return !a.testBit(i); } QBitRef& operator=(const QBitRef& val) { a.setBit(i, val); return *this; } QBitRef& operator=(bool val) { a.setBit(i, val); return *this; } }; inline QBitRef QBitArray::operator[](int i) { ((!(i >= 0)) ? qt_assert("i >= 0","/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/../../src/corelib/tools/qbitarray.h",160) : qt_noop()); return QBitRef(*this, i); } inline QBitRef QBitArray::operator[](uint i) { return QBitRef(*this, i); } __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QBitArray &); __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QBitArray &); __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QBitArray &); template< > class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QBitArray)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QBitArray) }; static inline const char *name() { return "QBitArray"; } }; template < > inline void qSwap(QBitArray &value1, QBitArray &value2) { value1 . swap(value2); } namespace std { template< > inline void swap< ::QBitArray>(::QBitArray &value1, ::QBitArray &value2) { value1 . swap(value2); } } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbitarray.h" 2 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QBitArray" 2 # 62 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qurl.h" 1 # 63 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 64 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h" 2 class QTextStream; class QQmlType; class QQmlPropertyData; namespace QV4 { struct ExecutionContext; } namespace QQmlJS { inline bool isNegative(double d) { uchar *dch = (uchar *)&d; if (QSysInfo::ByteOrder == QSysInfo::BigEndian) return (dch[0] & 0x80); else return (dch[7] & 0x80); } namespace V4IR { struct BasicBlock; struct Function; struct Module; struct Stmt; struct Expr; struct Const; struct String; struct RegExp; struct Name; struct Temp; struct Closure; struct Convert; struct Unop; struct Binop; struct Call; struct New; struct Subscript; struct Member; struct Exp; struct Move; struct Jump; struct CJump; struct Ret; struct Phi; enum AluOp { OpInvalid = 0, OpIfTrue, OpNot, OpUMinus, OpUPlus, OpCompl, OpIncrement, OpDecrement, OpBitAnd, OpBitOr, OpBitXor, OpAdd, OpSub, OpMul, OpDiv, OpMod, OpLShift, OpRShift, OpURShift, OpGt, OpLt, OpGe, OpLe, OpEqual, OpNotEqual, OpStrictEqual, OpStrictNotEqual, OpInstanceof, OpIn, OpAnd, OpOr, LastAluOp = OpOr }; AluOp binaryOperator(int op); const char *opname(V4IR::AluOp op); enum Type { UnknownType = 0, MissingType = 1 << 0, UndefinedType = 1 << 1, NullType = 1 << 2, BoolType = 1 << 3, SInt32Type = 1 << 4, UInt32Type = 1 << 5, DoubleType = 1 << 6, NumberType = SInt32Type | UInt32Type | DoubleType, StringType = 1 << 7, VarType = 1 << 8 }; inline bool strictlyEqualTypes(Type t1, Type t2) { return t1 == t2 || ((t1 & NumberType) && (t2 & NumberType)); } QString typeName(Type t); struct ExprVisitor { virtual ~ExprVisitor() {} virtual void visitConst(Const *) = 0; virtual void visitString(String *) = 0; virtual void visitRegExp(RegExp *) = 0; virtual void visitName(Name *) = 0; virtual void visitTemp(Temp *) = 0; virtual void visitClosure(Closure *) = 0; virtual void visitConvert(Convert *) = 0; virtual void visitUnop(Unop *) = 0; virtual void visitBinop(Binop *) = 0; virtual void visitCall(Call *) = 0; virtual void visitNew(New *) = 0; virtual void visitSubscript(Subscript *) = 0; virtual void visitMember(Member *) = 0; }; struct StmtVisitor { virtual ~StmtVisitor() {} virtual void visitExp(Exp *) = 0; virtual void visitMove(Move *) = 0; virtual void visitJump(Jump *) = 0; virtual void visitCJump(CJump *) = 0; virtual void visitRet(Ret *) = 0; virtual void visitPhi(Phi *) = 0; }; struct Expr { Type type; Expr(): type(UnknownType) {} virtual ~Expr() {} virtual void accept(ExprVisitor *) = 0; virtual bool isLValue() { return false; } virtual Const *asConst() { return 0; } virtual String *asString() { return 0; } virtual RegExp *asRegExp() { return 0; } virtual Name *asName() { return 0; } virtual Temp *asTemp() { return 0; } virtual Closure *asClosure() { return 0; } virtual Convert *asConvert() { return 0; } virtual Unop *asUnop() { return 0; } virtual Binop *asBinop() { return 0; } virtual Call *asCall() { return 0; } virtual New *asNew() { return 0; } virtual Subscript *asSubscript() { return 0; } virtual Member *asMember() { return 0; } virtual void dump(QTextStream &out) const = 0; }; struct ExprList { Expr *expr; ExprList *next; void init(Expr *expr, ExprList *next = 0) { this->expr = expr; this->next = next; } }; struct Const: Expr { double value; void init(Type type, double value) { this->type = type; this->value = value; } virtual void accept(ExprVisitor *v) { v->visitConst(this); } virtual Const *asConst() { return this; } virtual void dump(QTextStream &out) const; }; struct String: Expr { const QString *value; void init(const QString *value) { this->value = value; } virtual void accept(ExprVisitor *v) { v->visitString(this); } virtual String *asString() { return this; } virtual void dump(QTextStream &out) const; static QString escape(const QString &s); }; struct RegExp: Expr { enum Flags { RegExp_Global = 0x01, RegExp_IgnoreCase = 0x02, RegExp_Multiline = 0x04 }; const QString *value; int flags; void init(const QString *value, int flags) { this->value = value; this->flags = flags; } virtual void accept(ExprVisitor *v) { v->visitRegExp(this); } virtual RegExp *asRegExp() { return this; } virtual void dump(QTextStream &out) const; }; struct Name: Expr { enum Builtin { builtin_invalid, builtin_typeof, builtin_delete, builtin_throw, builtin_rethrow, builtin_unwind_exception, builtin_push_catch_scope, builtin_foreach_iterator_object, builtin_foreach_next_property_name, builtin_push_with_scope, builtin_pop_scope, builtin_declare_vars, builtin_define_property, builtin_define_array, builtin_define_getter_setter, builtin_define_object_literal, builtin_setup_argument_object, builtin_convert_this_to_object, builtin_qml_id_scope, builtin_qml_imported_scripts_object, builtin_qml_context_object, builtin_qml_scope_object }; const QString *id; Builtin builtin; bool global; quint32 line; quint32 column; void initGlobal(const QString *id, quint32 line, quint32 column); void init(const QString *id, quint32 line, quint32 column); void init(Builtin builtin, quint32 line, quint32 column); virtual void accept(ExprVisitor *v) { v->visitName(this); } virtual bool isLValue() { return true; } virtual Name *asName() { return this; } virtual void dump(QTextStream &out) const; }; struct Temp: Expr { enum Kind { Formal = 0, ScopedFormal, Local, ScopedLocal, VirtualRegister, PhysicalRegister, StackSlot }; unsigned index; unsigned scope : 28; unsigned kind : 3; unsigned isArgumentsOrEval : 1; void init(unsigned kind, unsigned index, unsigned scope) { ((!((kind == ScopedLocal && scope != 0) || (kind == ScopedFormal && scope != 0) || (scope == 0))) ? qt_assert("(kind == ScopedLocal && scope != 0) || (kind == ScopedFormal && scope != 0) || (scope == 0)","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h",371) : qt_noop()); this->kind = kind; this->index = index; this->scope = scope; this->isArgumentsOrEval = false; } virtual void accept(ExprVisitor *v) { v->visitTemp(this); } virtual bool isLValue() { return true; } virtual Temp *asTemp() { return this; } virtual void dump(QTextStream &out) const; }; inline bool operator==(const Temp &t1, const Temp &t2) noexcept { return t1.index == t2.index && t1.scope == t2.scope && t1.kind == t2.kind && t1.type == t2.type; } inline uint qHash(const Temp &t, uint seed = 0) noexcept { return t.index ^ (t.kind | (t.scope << 3)) ^ seed; } bool operator<(const Temp &t1, const Temp &t2) noexcept; struct Closure: Expr { int value; const QString *functionName; void init(int functionInModule, const QString *functionName) { this->value = functionInModule; this->functionName = functionName; } virtual void accept(ExprVisitor *v) { v->visitClosure(this); } virtual Closure *asClosure() { return this; } virtual void dump(QTextStream &out) const; }; struct Convert: Expr { Expr *expr; void init(Expr *expr, Type type) { this->expr = expr; this->type = type; } virtual void accept(ExprVisitor *v) { v->visitConvert(this); } virtual Convert *asConvert() { return this; } virtual void dump(QTextStream &out) const; }; struct Unop: Expr { AluOp op; Expr *expr; void init(AluOp op, Expr *expr) { this->op = op; this->expr = expr; } virtual void accept(ExprVisitor *v) { v->visitUnop(this); } virtual Unop *asUnop() { return this; } virtual void dump(QTextStream &out) const; }; struct Binop: Expr { AluOp op; Expr *left; Expr *right; void init(AluOp op, Expr *left, Expr *right) { this->op = op; this->left = left; this->right = right; } virtual void accept(ExprVisitor *v) { v->visitBinop(this); } virtual Binop *asBinop() { return this; } virtual void dump(QTextStream &out) const; }; struct Call: Expr { Expr *base; ExprList *args; void init(Expr *base, ExprList *args) { this->base = base; this->args = args; } Expr *onlyArgument() const { if (args && ! args->next) return args->expr; return 0; } virtual void accept(ExprVisitor *v) { v->visitCall(this); } virtual Call *asCall() { return this; } virtual void dump(QTextStream &out) const; }; struct New: Expr { Expr *base; ExprList *args; void init(Expr *base, ExprList *args) { this->base = base; this->args = args; } Expr *onlyArgument() const { if (args && ! args->next) return args->expr; return 0; } virtual void accept(ExprVisitor *v) { v->visitNew(this); } virtual New *asNew() { return this; } virtual void dump(QTextStream &out) const; }; struct Subscript: Expr { Expr *base; Expr *index; void init(Expr *base, Expr *index) { this->base = base; this->index = index; } virtual void accept(ExprVisitor *v) { v->visitSubscript(this); } virtual bool isLValue() { return true; } virtual Subscript *asSubscript() { return this; } virtual void dump(QTextStream &out) const; }; struct Member: Expr { enum MemberType { MemberByName, MemberOfQmlContext, MemberOfQObject }; MemberType type; Expr *base; const QString *name; int memberIndex; QQmlPropertyData *property; void init(Expr *base, const QString *name) { this->type = MemberByName; this->base = base; this->name = name; this->memberIndex = -1; this->property = 0; } void initQmlContextMember(Expr *base, const QString *name, int memberIndex) { this->type = MemberOfQmlContext; this->base = base; this->name = name; this->memberIndex = memberIndex; this->property = 0; } void initMetaProperty(Expr *base, const QString *name, QQmlPropertyData *property) { this->type = MemberOfQObject; this->base = base; this->name = name; this->property = property; } virtual void accept(ExprVisitor *v) { v->visitMember(this); } virtual bool isLValue() { return type != MemberOfQmlContext; } virtual Member *asMember() { return this; } virtual void dump(QTextStream &out) const; }; struct Stmt { enum Mode { HIR, MIR }; struct Data { QVector incoming; }; Data *d; int id; AST::SourceLocation location; Stmt(): d(0), id(-1) {} virtual ~Stmt() { do { ((!(false)) ? qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4jsir_p.h",587) : qt_noop()); __builtin_unreachable(); } while (0); } virtual Stmt *asTerminator() { return 0; } virtual void accept(StmtVisitor *) = 0; virtual Exp *asExp() { return 0; } virtual Move *asMove() { return 0; } virtual Jump *asJump() { return 0; } virtual CJump *asCJump() { return 0; } virtual Ret *asRet() { return 0; } virtual Phi *asPhi() { return 0; } virtual void dump(QTextStream &out, Mode mode = HIR) = 0; void destroyData() { delete d; d = 0; } }; struct Exp: Stmt { Expr *expr; void init(Expr *expr) { this->expr = expr; } virtual void accept(StmtVisitor *v) { v->visitExp(this); } virtual Exp *asExp() { return this; } virtual void dump(QTextStream &out, Mode); }; struct Move: Stmt { Expr *target; Expr *source; bool swap; void init(Expr *target, Expr *source) { this->target = target; this->source = source; this->swap = false; } virtual void accept(StmtVisitor *v) { v->visitMove(this); } virtual Move *asMove() { return this; } virtual void dump(QTextStream &out, Mode mode = HIR); }; struct Jump: Stmt { BasicBlock *target; void init(BasicBlock *target) { this->target = target; } virtual Stmt *asTerminator() { return this; } virtual void accept(StmtVisitor *v) { v->visitJump(this); } virtual Jump *asJump() { return this; } virtual void dump(QTextStream &out, Mode mode); }; struct CJump: Stmt { Expr *cond; BasicBlock *iftrue; BasicBlock *iffalse; void init(Expr *cond, BasicBlock *iftrue, BasicBlock *iffalse) { this->cond = cond; this->iftrue = iftrue; this->iffalse = iffalse; } virtual Stmt *asTerminator() { return this; } virtual void accept(StmtVisitor *v) { v->visitCJump(this); } virtual CJump *asCJump() { return this; } virtual void dump(QTextStream &out, Mode mode); }; struct Ret: Stmt { Expr *expr; void init(Expr *expr) { this->expr = expr; } virtual Stmt *asTerminator() { return this; } virtual void accept(StmtVisitor *v) { v->visitRet(this); } virtual Ret *asRet() { return this; } virtual void dump(QTextStream &out, Mode); }; struct Phi: Stmt { Temp *targetTemp; virtual void accept(StmtVisitor *v) { v->visitPhi(this); } virtual Phi *asPhi() { return this; } virtual void dump(QTextStream &out, Mode mode); }; struct __attribute__((visibility("default"))) Module { MemoryPool pool; QVector functions; Function *rootFunction; QString fileName; bool isQmlModule; bool debugMode; Function *newFunction(const QString &name, Function *outer); Module(bool debugMode) : rootFunction(0) , isQmlModule(false) , debugMode(debugMode) {} ~Module(); void setFileName(const QString &name); }; struct Function { Module *module; MemoryPool *pool; const QString *name; QVector basicBlocks; int tempCount; int maxNumberOfArguments; QSet strings; QList formals; QList locals; QVector nestedFunctions; Function *outer; int insideWithOrCatch; uint hasDirectEval: 1; uint usesArgumentsObject : 1; uint usesThis : 1; uint isStrict: 1; uint isNamedExpression : 1; uint hasTry: 1; uint hasWith: 1; uint unused : 25; int line; int column; QSet idObjectDependencies; QSet contextObjectDependencies; QSet scopeObjectDependencies; bool hasQmlDependencies() const { return !idObjectDependencies.isEmpty() || !contextObjectDependencies.isEmpty() || !scopeObjectDependencies.isEmpty(); } template _Tp *New() { return new (pool->allocate(sizeof(_Tp))) _Tp(); } Function(Module *module, Function *outer, const QString &name) : module(module) , pool(&module->pool) , tempCount(0) , maxNumberOfArguments(0) , outer(outer) , insideWithOrCatch(0) , hasDirectEval(false) , usesArgumentsObject(false) , isStrict(false) , isNamedExpression(false) , hasTry(false) , hasWith(false) , unused(0) , line(-1) , column(-1) { this->name = newString(name); } ~Function(); enum BasicBlockInsertMode { InsertBlock, DontInsertBlock }; BasicBlock *newBasicBlock(BasicBlock *containingLoop, BasicBlock *catchBlock, BasicBlockInsertMode mode = InsertBlock); const QString *newString(const QString &text); void RECEIVE(const QString &name) { formals.append(newString(name)); } void LOCAL(const QString &name) { locals.append(newString(name)); } inline BasicBlock *insertBasicBlock(BasicBlock *block) { basicBlocks.append(block); return block; } void dump(QTextStream &out, Stmt::Mode mode = Stmt::HIR); void removeSharedExpressions(); int indexOfArgument(const QStringRef &string) const; bool variablesCanEscape() const { return hasDirectEval || !nestedFunctions.isEmpty() || module->debugMode; } }; struct BasicBlock { Function *function; BasicBlock *catchBlock; QVector statements; QVector in; QVector out; QBitArray liveIn; QBitArray liveOut; int index; bool isExceptionHandler; AST::SourceLocation nextLocation; BasicBlock(Function *function, BasicBlock *containingLoop, BasicBlock *catcher) : function(function) , catchBlock(catcher) , index(-1) , isExceptionHandler(false) , _containingGroup(containingLoop) , _groupStart(false) {} ~BasicBlock() {} template inline Instr i(Instr i) { statements.append(i); return i; } inline bool isEmpty() const { return statements.isEmpty(); } inline Stmt *terminator() const { if (! statements.isEmpty() && statements.at(statements.size() - 1)->asTerminator() != 0) return statements.at(statements.size() - 1); return 0; } inline bool isTerminated() const { if (terminator() != 0) return true; return false; } unsigned newTemp(); Temp *TEMP(unsigned kind); Temp *ARG(unsigned index, unsigned scope); Temp *LOCAL(unsigned index, unsigned scope); Expr *CONST(Type type, double value); Expr *STRING(const QString *value); Expr *REGEXP(const QString *value, int flags); Name *NAME(const QString &id, quint32 line, quint32 column); Name *NAME(Name::Builtin builtin, quint32 line, quint32 column); Name *GLOBALNAME(const QString &id, quint32 line, quint32 column); Closure *CLOSURE(int functionInModule); Expr *CONVERT(Expr *expr, Type type); Expr *UNOP(AluOp op, Expr *expr); Expr *BINOP(AluOp op, Expr *left, Expr *right); Expr *CALL(Expr *base, ExprList *args = 0); Expr *NEW(Expr *base, ExprList *args = 0); Expr *SUBSCRIPT(Expr *base, Expr *index); Expr *MEMBER(Expr *base, const QString *name); Expr *QML_CONTEXT_MEMBER(Expr *base, const QString *id, int memberIndex); Expr *QML_QOBJECT_PROPERTY(Expr *base, const QString *id, QQmlPropertyData *property); Stmt *EXP(Expr *expr); Stmt *MOVE(Expr *target, Expr *source); Stmt *JUMP(BasicBlock *target); Stmt *CJUMP(Expr *cond, BasicBlock *iftrue, BasicBlock *iffalse); Stmt *RET(Temp *expr); void dump(QTextStream &out, Stmt::Mode mode = Stmt::HIR); void appendStatement(Stmt *statement); BasicBlock *containingGroup() const { return _containingGroup; } bool isGroupStart() const { return _groupStart; } void markAsGroupStart() { _groupStart = true; } private: BasicBlock *_containingGroup; bool _groupStart; }; class CloneExpr: protected V4IR::ExprVisitor { public: explicit CloneExpr(V4IR::BasicBlock *block = 0); void setBasicBlock(V4IR::BasicBlock *block); template _Expr *operator()(_Expr *expr) { return clone(expr); } template _Expr *clone(_Expr *expr) { Expr *c = expr; qSwap(cloned, c); expr->accept(this); qSwap(cloned, c); return static_cast<_Expr *>(c); } static Const *cloneConst(Const *c, Function *f) { Const *newConst = f->New(); newConst->init(c->type, c->value); return newConst; } static Name *cloneName(Name *n, Function *f) { Name *newName = f->New(); newName->type = n->type; newName->id = n->id; newName->builtin = n->builtin; newName->global = n->global; newName->line = n->line; newName->column = n->column; return newName; } static Temp *cloneTemp(Temp *t, Function *f) { Temp *newTemp = f->New(); newTemp->init(t->kind, t->index, t->scope); newTemp->type = t->type; return newTemp; } protected: V4IR::ExprList *clone(V4IR::ExprList *list); virtual void visitConst(Const *); virtual void visitString(String *); virtual void visitRegExp(RegExp *); virtual void visitName(Name *); virtual void visitTemp(Temp *); virtual void visitClosure(Closure *); virtual void visitConvert(Convert *); virtual void visitUnop(Unop *); virtual void visitBinop(Binop *); virtual void visitCall(Call *); virtual void visitNew(New *); virtual void visitSubscript(Subscript *); virtual void visitMember(Member *); private: V4IR::BasicBlock *block; V4IR::Expr *cloned; }; } } # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4compileddata_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 2 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QStringList" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstringlist.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QStringList" 2 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4value_def_p.h" 1 # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4executableallocator_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QMultiMap" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmap.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QMultiMap" 2 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 2 # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QByteArray" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QByteArray" 2 # 51 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QMutex" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmutex.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QMutex" 2 # 52 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4executableallocator_p.h" 2 namespace WTF { class PageAllocation; }; namespace QV4 { class ExecutableAllocator { public: struct ChunkOfPages; struct Allocation; ExecutableAllocator(); ~ExecutableAllocator(); Allocation *allocate(size_t size); void free(Allocation *allocation); struct Allocation { Allocation() : addr(0) , size(0) , free(true) , next(0) , prev(0) {} void *start() const; void invalidate() { addr = 0; } bool isValid() const { return addr != 0; } void deallocate(ExecutableAllocator *allocator); private: ~Allocation() {} friend class ExecutableAllocator; Allocation *split(size_t dividingSize); bool mergeNext(ExecutableAllocator *allocator); bool mergePrevious(ExecutableAllocator *allocator); quintptr addr; uint size : 31; uint free : 1; Allocation *next; Allocation *prev; }; int freeAllocationCount() const { return freeAllocations.count(); } int chunkCount() const { return chunks.count(); } struct ChunkOfPages { ChunkOfPages() : pages(0) , firstAllocation(0) {} ~ChunkOfPages(); WTF::PageAllocation *pages; Allocation *firstAllocation; bool contains(Allocation *alloc) const; }; ChunkOfPages *chunkForAllocation(Allocation *allocation) const; private: QMultiMap freeAllocations; QMap chunks; mutable QMutex mutex; }; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4executableallocator_p.h" 2 # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compileddata_p.h" 2 namespace QQmlJS { namespace V4IR { struct Function; } } namespace QV4 { struct Function; struct ExecutionContext; namespace CompiledData { struct String; struct Function; struct Lookup; struct RegExp; struct Location { int line; int column; }; struct TypeReferenceMap : QHash { void add(int nameIndex, const Location &loc) { if (contains(nameIndex)) return; insert(nameIndex, loc); } }; struct RegExp { enum Flags { RegExp_Global = 0x01, RegExp_IgnoreCase = 0x02, RegExp_Multiline = 0x04 }; quint32 flags; quint32 stringIndex; static int calculateSize() { return sizeof(RegExp); } }; struct Lookup { enum Type { Type_Getter = 0x0, Type_Setter = 0x1, Type_GlobalGetter = 2 }; quint32 type_and_flags; quint32 nameIndex; static int calculateSize() { return sizeof(Lookup); } }; struct JSClassMember { uint nameOffset : 31; uint isAccessor : 1; }; struct JSClass { uint nMembers; static int calculateSize(int nMembers) { return (sizeof(JSClass) + nMembers * sizeof(JSClassMember) + 7) & ~7; } }; struct String { quint32 hash; quint32 flags; QArrayData str; static int calculateSize(const QString &str) { return (sizeof(String) + (str.length() + 1) * sizeof(quint16) + 7) & ~0x7; } }; static const char magic_str[] = "qv4cdata"; struct Unit { char magic[8]; qint16 architecture; qint16 version; enum { IsJavascript = 0x1, IsQml = 0x2, StaticData = 0x4, IsSingleton = 0x8 }; quint32 flags; uint stringTableSize; uint offsetToStringTable; uint functionTableSize; uint offsetToFunctionTable; uint lookupTableSize; uint offsetToLookupTable; uint regexpTableSize; uint offsetToRegexpTable; uint constantTableSize; uint offsetToConstantTable; uint jsClassTableSize; uint offsetToJSClassTable; qint32 indexOfRootFunction; quint32 sourceFileIndex; QString stringAt(int idx) const { const uint *offsetTable = reinterpret_cast((reinterpret_cast(this)) + offsetToStringTable); const uint offset = offsetTable[idx]; const String *str = reinterpret_cast(reinterpret_cast(this) + offset); QStringDataPtr holder = { const_cast(static_cast(&str->str)) }; QString qstr(holder); if (flags & StaticData) return qstr; return QString(qstr.constData(), qstr.length()); } const Function *functionAt(int idx) const { const uint *offsetTable = reinterpret_cast((reinterpret_cast(this)) + offsetToFunctionTable); const uint offset = offsetTable[idx]; return reinterpret_cast(reinterpret_cast(this) + offset); } const Lookup *lookupTable() const { return reinterpret_cast(reinterpret_cast(this) + offsetToLookupTable); } const RegExp *regexpAt(int index) const { return reinterpret_cast(reinterpret_cast(this) + offsetToRegexpTable + index * sizeof(RegExp)); } const QV4::SafeValue *constants() const { return reinterpret_cast(reinterpret_cast(this) + offsetToConstantTable); } const JSClassMember *jsClassAt(int idx, int *nMembers) const { const uint *offsetTable = reinterpret_cast(reinterpret_cast(this) + offsetToJSClassTable); const uint offset = offsetTable[idx]; const char *ptr = reinterpret_cast(this) + offset; const JSClass *klass = reinterpret_cast(ptr); *nMembers = klass->nMembers; return reinterpret_cast(ptr + sizeof(JSClass)); } static int calculateSize(uint headerSize, uint nStrings, uint nFunctions, uint nRegExps, uint nConstants, uint nLookups, uint nClasses) { return (headerSize + (nStrings + nFunctions + nClasses) * sizeof(uint) + nRegExps * RegExp::calculateSize() + nConstants * sizeof(QV4::ReturnedValue) + nLookups * Lookup::calculateSize() + 7) & ~7; } }; struct Function { enum Flags { HasDirectEval = 0x1, UsesArgumentsObject = 0x2, IsStrict = 0x4, IsNamedExpression = 0x8, HasCatchOrWith = 0x10 }; quint32 index; quint32 nameIndex; qint64 flags; quint32 nFormals; quint32 formalsOffset; quint32 nLocals; quint32 localsOffset; quint32 nLineNumberMappingEntries; quint32 lineNumberMappingOffset; quint32 nInnerFunctions; quint32 innerFunctionsOffset; Location location; quint32 nDependingIdObjects; quint32 dependingIdObjectsOffset; quint32 nDependingContextProperties; quint32 dependingContextPropertiesOffset; quint32 nDependingScopeProperties; quint32 dependingScopePropertiesOffset; const quint32 *formalsTable() const { return reinterpret_cast(reinterpret_cast(this) + formalsOffset); } const quint32 *localsTable() const { return reinterpret_cast(reinterpret_cast(this) + localsOffset); } const quint32 *lineNumberMapping() const { return reinterpret_cast(reinterpret_cast(this) + lineNumberMappingOffset); } const quint32 *qmlIdObjectDependencyTable() const { return reinterpret_cast(reinterpret_cast(this) + dependingIdObjectsOffset); } const quint32 *qmlContextPropertiesDependencyTable() const { return reinterpret_cast(reinterpret_cast(this) + dependingContextPropertiesOffset); } const quint32 *qmlScopePropertiesDependencyTable() const { return reinterpret_cast(reinterpret_cast(this) + dependingScopePropertiesOffset); } inline bool hasQmlDependencies() const { return nDependingIdObjects > 0 || nDependingContextProperties > 0 || nDependingScopeProperties > 0; } static int calculateSize(int nFormals, int nLocals, int nInnerfunctions, int lineNumberMappings, int nIdObjectDependencies, int nPropertyDependencies) { return (sizeof(Function) + (nFormals + nLocals + nInnerfunctions + 2 * lineNumberMappings + nIdObjectDependencies + 2 * nPropertyDependencies) * sizeof(quint32) + 7) & ~0x7; } }; struct Binding { quint32 propertyNameIndex; enum ValueType { Type_Invalid, Type_Boolean, Type_Number, Type_String, Type_Script, Type_Object, Type_AttachedProperty, Type_GroupProperty }; enum Flags { IsSignalHandlerExpression = 0x1 }; quint32 flags : 16; quint32 type : 16; union { bool b; double d; quint32 compiledScriptIndex; quint32 objectIndex; } value; quint32 stringIndex; Location location; QString valueAsString(const Unit *unit) const; double valueAsNumber() const { if (type == Type_Number) return value.d; return 0.0; } bool valueAsBoolean() const { if (type == Type_Boolean) return value.b; return false; } }; struct Parameter { quint32 nameIndex; quint32 type; quint32 customTypeNameIndex; quint32 reserved; Location location; }; struct Signal { quint32 nameIndex; quint32 nParameters; Location location; const Parameter *parameterAt(int idx) const { return reinterpret_cast(this + 1) + idx; } static int calculateSize(int nParameters) { return (sizeof(Signal) + nParameters * sizeof(Parameter) + 7) & ~0x7; } }; struct Property { enum Type { Var = 0, Variant, Int, Bool, Real, String, Url, Color, Font, Time, Date, DateTime, Rect, Point, Size, Vector2D, Vector3D, Vector4D, Matrix4x4, Quaternion, Alias, Custom, CustomList }; enum Flags { IsReadOnly = 0x1 }; quint32 nameIndex; quint32 type; union { quint32 customTypeNameIndex; quint32 aliasIdValueIndex; }; quint32 aliasPropertyValueIndex; quint32 flags; Location location; Location aliasLocation; }; struct Object { quint32 inheritedTypeNameIndex; quint32 idIndex; quint32 indexOfDefaultProperty; quint32 nFunctions; quint32 offsetToFunctions; quint32 nProperties; quint32 offsetToProperties; quint32 nSignals; quint32 offsetToSignals; quint32 nBindings; quint32 offsetToBindings; Location location; Location locationOfIdProperty; static int calculateSizeExcludingSignals(int nFunctions, int nProperties, int nSignals, int nBindings) { return ( sizeof(Object) + nFunctions * sizeof(quint32) + nProperties * sizeof(Property) + nSignals * sizeof(quint32) + nBindings * sizeof(Binding) + 0x7 ) & ~0x7; } const quint32 *functionOffsetTable() const { return reinterpret_cast(reinterpret_cast(this) + offsetToFunctions); } const Property *propertyTable() const { return reinterpret_cast(reinterpret_cast(this) + offsetToProperties); } const Binding *bindingTable() const { return reinterpret_cast(reinterpret_cast(this) + offsetToBindings); } const Signal *signalAt(int idx) const { const uint *offsetTable = reinterpret_cast((reinterpret_cast(this)) + offsetToSignals); const uint offset = offsetTable[idx]; return reinterpret_cast(reinterpret_cast(this) + offset); } }; struct Import { enum ImportType { ImportLibrary = 0x1, ImportFile = 0x2, ImportScript = 0x3 }; quint32 type; quint32 uriIndex; quint32 qualifierIndex; qint32 majorVersion; qint32 minorVersion; Location location; }; struct QmlUnit { Unit header; quint32 nImports; quint32 offsetToImports; quint32 nObjects; quint32 offsetToObjects; quint32 indexOfRootObject; const Import *importAt(int idx) const { return reinterpret_cast((reinterpret_cast(this)) + offsetToImports + idx * sizeof(Import)); } const Object *objectAt(int idx) const { const uint *offsetTable = reinterpret_cast((reinterpret_cast(this)) + offsetToObjects); const uint offset = offsetTable[idx]; return reinterpret_cast(reinterpret_cast(this) + offset); } bool isSingleton() const { return header.flags & Unit::IsSingleton; } }; struct __attribute__((visibility("default"))) CompilationUnit { CompilationUnit() : refCount(0) , engine(0) , data(0) , ownsData(false) , runtimeStrings(0) , runtimeLookups(0) , runtimeRegularExpressions(0) , runtimeClasses(0) {} virtual ~CompilationUnit(); void ref() { ++refCount; } void deref() { if (!--refCount) delete this; } int refCount; ExecutionEngine *engine; Unit *data; bool ownsData; QString fileName() const { return data->stringAt(data->sourceFileIndex); } QV4::SafeString *runtimeStrings; QV4::Lookup *runtimeLookups; QV4::SafeValue *runtimeRegularExpressions; QV4::InternalClass **runtimeClasses; QVector runtimeFunctions; QV4::Function *linkToEngine(QV4::ExecutionEngine *engine); void unlink(); virtual QV4::ExecutableAllocator::ChunkOfPages *chunkForFunction(int ) { return 0; } void markObjects(QV4::ExecutionEngine *e); protected: virtual void linkBackendToEngine(QV4::ExecutionEngine *engine) = 0; }; } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4compileddata_p.h" 2 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4compiler_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compiler_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4compiler_p.h" 2 class QQmlPropertyData; namespace QV4 { namespace CompiledData { struct Unit; struct Lookup; struct RegExp; struct JSClassMember; } namespace Compiler { struct __attribute__((visibility("default"))) JSUnitGenerator { JSUnitGenerator(QQmlJS::V4IR::Module *module, int headerSize = -1); QQmlJS::V4IR::Module *irModule; int registerString(const QString &str); int getStringId(const QString &string) const; uint registerGetterLookup(const QString &name); uint registerSetterLookup(const QString &name); uint registerGlobalGetterLookup(const QString &name); int registerRegExp(QQmlJS::V4IR::RegExp *regexp); int registerConstant(ReturnedValue v); void registerLineNumberMapping(QQmlJS::V4IR::Function *function, const QVector &mappings); int registerJSClass(QQmlJS::V4IR::ExprList *args); QV4::CompiledData::Unit *generateUnit(int *totalUnitSize = 0); int writeFunction(char *f, int index, QQmlJS::V4IR::Function *irFunction); QHash stringToId; QStringList strings; uint stringDataSize; QHash functionOffsets; QList lookups; QVector regexps; QVector constants; QHash > lineNumberMappingsPerFunction; QList > jsClasses; uint jsClassDataSize; uint headerSize; typedef QHash > IdDependencyHash; IdDependencyHash qmlIdObjectDependenciesPerFunction; typedef QHash > PropertyDependencyHash; PropertyDependencyHash qmlContextPropertyDependenciesPerFunction; PropertyDependencyHash qmlScopePropertyDependenciesPerFunction; }; } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4compiler_p.h" 2 # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 51 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 52 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/compiler/qv4isel_p.h" 2 namespace QV4 { class ExecutableAllocator; struct Function; } namespace QQmlJS { class __attribute__((visibility("default"))) EvalInstructionSelection { public: EvalInstructionSelection(QV4::ExecutableAllocator *execAllocator, V4IR::Module *module, QV4::Compiler::JSUnitGenerator *jsGenerator); virtual ~EvalInstructionSelection() = 0; QV4::CompiledData::CompilationUnit *compile(bool generateUnitData = true); void setUseFastLookups(bool b) { useFastLookups = b; } int registerString(const QString &str) { return jsGenerator->registerString(str); } uint registerGetterLookup(const QString &name) { return jsGenerator->registerGetterLookup(name); } uint registerSetterLookup(const QString &name) { return jsGenerator->registerSetterLookup(name); } uint registerGlobalGetterLookup(const QString &name) { return jsGenerator->registerGlobalGetterLookup(name); } int registerRegExp(QQmlJS::V4IR::RegExp *regexp) { return jsGenerator->registerRegExp(regexp); } int registerJSClass(QQmlJS::V4IR::ExprList *args) { return jsGenerator->registerJSClass(args); } QV4::Compiler::JSUnitGenerator *jsUnitGenerator() const { return jsGenerator; } protected: virtual void run(int functionIndex) = 0; virtual QV4::CompiledData::CompilationUnit *backendCompileStep() = 0; bool useFastLookups; QV4::ExecutableAllocator *executableAllocator; QV4::Compiler::JSUnitGenerator *jsGenerator; QScopedPointer ownJSGenerator; V4IR::Module *irModule; }; class __attribute__((visibility("default"))) EvalISelFactory { public: virtual ~EvalISelFactory() = 0; virtual EvalInstructionSelection *create(QV4::ExecutableAllocator *execAllocator, V4IR::Module *module, QV4::Compiler::JSUnitGenerator *jsGenerator) = 0; virtual bool jitCompileRegexps() const = 0; }; namespace V4IR { class __attribute__((visibility("default"))) IRDecoder: protected V4IR::StmtVisitor { public: IRDecoder() : _function(0) {} virtual ~IRDecoder() = 0; virtual void visitPhi(V4IR::Phi *) {} public: virtual void visitMove(V4IR::Move *s); virtual void visitExp(V4IR::Exp *s); public: virtual void callBuiltinInvalid(V4IR::Name *func, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void callBuiltinTypeofMember(V4IR::Expr *base, const QString &name, V4IR::Temp *result) = 0; virtual void callBuiltinTypeofSubscript(V4IR::Expr *base, V4IR::Expr *index, V4IR::Temp *result) = 0; virtual void callBuiltinTypeofName(const QString &name, V4IR::Temp *result) = 0; virtual void callBuiltinTypeofValue(V4IR::Expr *value, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteSubscript(V4IR::Temp *base, V4IR::Expr *index, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteName(const QString &name, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteValue(V4IR::Temp *result) = 0; virtual void callBuiltinThrow(V4IR::Expr *arg) = 0; virtual void callBuiltinReThrow() = 0; virtual void callBuiltinUnwindException(V4IR::Temp *) = 0; virtual void callBuiltinPushCatchScope(const QString &exceptionName) = 0; virtual void callBuiltinForeachIteratorObject(V4IR::Temp *arg, V4IR::Temp *result) = 0; virtual void callBuiltinForeachNextPropertyname(V4IR::Temp *arg, V4IR::Temp *result) = 0; virtual void callBuiltinPushWithScope(V4IR::Temp *arg) = 0; virtual void callBuiltinPopScope() = 0; virtual void callBuiltinDeclareVar(bool deletable, const QString &name) = 0; virtual void callBuiltinDefineGetterSetter(V4IR::Temp *object, const QString &name, V4IR::Temp *getter, V4IR::Temp *setter) = 0; virtual void callBuiltinDefineProperty(V4IR::Temp *object, const QString &name, V4IR::Expr *value) = 0; virtual void callBuiltinDefineArray(V4IR::Temp *result, V4IR::ExprList *args) = 0; virtual void callBuiltinDefineObjectLiteral(V4IR::Temp *result, V4IR::ExprList *args) = 0; virtual void callBuiltinSetupArgumentObject(V4IR::Temp *result) = 0; virtual void callBuiltinConvertThisToObject() = 0; virtual void callValue(V4IR::Temp *value, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void callProperty(V4IR::Expr *base, const QString &name, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void callSubscript(V4IR::Expr *base, V4IR::Expr *index, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void convertType(V4IR::Temp *source, V4IR::Temp *target) = 0; virtual void constructActivationProperty(V4IR::Name *func, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void constructProperty(V4IR::Temp *base, const QString &name, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void constructValue(V4IR::Temp *value, V4IR::ExprList *args, V4IR::Temp *result) = 0; virtual void loadThisObject(V4IR::Temp *temp) = 0; virtual void loadQmlIdObject(int id, V4IR::Temp *temp) = 0; virtual void loadQmlImportedScripts(V4IR::Temp *temp) = 0; virtual void loadQmlContextObject(V4IR::Temp *temp) = 0; virtual void loadQmlScopeObject(V4IR::Temp *temp) = 0; virtual void loadConst(V4IR::Const *sourceConst, V4IR::Temp *targetTemp) = 0; virtual void loadString(const QString &str, V4IR::Temp *targetTemp) = 0; virtual void loadRegexp(V4IR::RegExp *sourceRegexp, V4IR::Temp *targetTemp) = 0; virtual void getActivationProperty(const V4IR::Name *name, V4IR::Temp *temp) = 0; virtual void setActivationProperty(V4IR::Expr *source, const QString &targetName) = 0; virtual void initClosure(V4IR::Closure *closure, V4IR::Temp *target) = 0; virtual void getProperty(V4IR::Expr *base, const QString &name, V4IR::Temp *target) = 0; virtual void getQObjectProperty(V4IR::Expr *base, int propertyIndex, bool captureRequired, V4IR::Temp *targetTemp) = 0; virtual void setProperty(V4IR::Expr *source, V4IR::Expr *targetBase, const QString &targetName) = 0; virtual void setQObjectProperty(V4IR::Expr *source, V4IR::Expr *targetBase, int propertyIndex) = 0; virtual void getElement(V4IR::Expr *base, V4IR::Expr *index, V4IR::Temp *target) = 0; virtual void setElement(V4IR::Expr *source, V4IR::Expr *targetBase, V4IR::Expr *targetIndex) = 0; virtual void copyValue(V4IR::Temp *sourceTemp, V4IR::Temp *targetTemp) = 0; virtual void swapValues(V4IR::Temp *sourceTemp, V4IR::Temp *targetTemp) = 0; virtual void unop(V4IR::AluOp oper, V4IR::Temp *sourceTemp, V4IR::Temp *targetTemp) = 0; virtual void binop(V4IR::AluOp oper, V4IR::Expr *leftSource, V4IR::Expr *rightSource, V4IR::Temp *target) = 0; protected: virtual void callBuiltin(V4IR::Call *c, V4IR::Temp *result); V4IR::Function *_function; }; } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4isel_p.h" 2 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4util_p.h" 1 namespace QV4 { template struct TemporaryAssignment { TemporaryAssignment(T &var, const T& temporaryValue) : variable(var) , savedValue(var) { variable = temporaryValue; } ~TemporaryAssignment() { variable = savedValue; } T &variable; T savedValue; private: TemporaryAssignment(const TemporaryAssignment&); TemporaryAssignment operator=(const TemporaryAssignment&); }; } # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4context_p.h" 1 namespace QV4 { struct Object; struct ExecutionEngine; struct DeclarativeEnvironment; struct Lookup; struct Function; struct ValueRef; namespace CompiledData { struct CompilationUnit; struct Function; }; struct CallContext; struct CallContext; struct CatchContext; struct WithContext; struct __attribute__((visibility("default"))) ExecutionContext { enum Type { Type_GlobalContext = 0x1, Type_CatchContext = 0x2, Type_WithContext = 0x3, Type_SimpleCallContext = 0x4, Type_CallContext = 0x5, Type_QmlContext = 0x6 }; Type type; bool strictMode; bool marked; CallData *callData; ExecutionEngine *engine; ExecutionContext *parent; ExecutionContext *outer; Lookup *lookups; CompiledData::CompilationUnit *compilationUnit; ExecutionContext *next; struct EvalCode { Function *function; EvalCode *next; }; EvalCode *currentEvalCode; const uchar **interpreterInstructionPointer; char *jitInstructionPointer; void initBaseContext(Type type, ExecutionEngine *engine, ExecutionContext *parentContext) { this->type = type; strictMode = false; marked = false; this->engine = engine; parent = parentContext; outer = 0; lookups = 0; compilationUnit = 0; currentEvalCode = 0; interpreterInstructionPointer = 0; jitInstructionPointer = 0; } CallContext *newCallContext(FunctionObject *f, CallData *callData); WithContext *newWithContext(ObjectRef with); CatchContext *newCatchContext(const StringRef exceptionVarName, const ValueRef exceptionValue); CallContext *newQmlContext(FunctionObject *f, ObjectRef qml); String * const *formals() const; unsigned int formalCount() const; String * const *variables() const; unsigned int variableCount() const; void createMutableBinding(const StringRef name, bool deletable); ReturnedValue throwError(const QV4::ValueRef value); ReturnedValue throwError(const QString &message); ReturnedValue throwSyntaxError(const QString &message); ReturnedValue throwSyntaxError(const QString &message, const QString &fileName, int line, int column); ReturnedValue throwTypeError(); ReturnedValue throwTypeError(const QString &message); ReturnedValue throwReferenceError(const ValueRef value); ReturnedValue throwReferenceError(const QString &value, const QString &fileName, int line, int column); ReturnedValue throwRangeError(const ValueRef value); ReturnedValue throwRangeError(const QString &message); ReturnedValue throwURIError(const ValueRef msg); ReturnedValue throwUnimplemented(const QString &message); void setProperty(const StringRef name, const ValueRef value); ReturnedValue getProperty(const StringRef name); ReturnedValue getPropertyAndBase(const StringRef name, ObjectRef base); bool deleteProperty(const StringRef name); ReturnedValue catchException(StackTrace *trace = 0); void mark(); inline CallContext *asCallContext(); inline const CallContext *asCallContext() const; }; struct CallContext : public ExecutionContext { FunctionObject *function; int realArgumentCount; SafeValue *locals; Object *activation; void initSimpleCallContext(ExecutionEngine *engine, ExecutionContext *parent) { initBaseContext(Type_SimpleCallContext, engine, parent); function = 0; locals = 0; activation = 0; } void initQmlContext(ExecutionContext *parentContext, ObjectRef qml, QV4::FunctionObject *function); inline ReturnedValue argument(int i); bool needsOwnArguments() const; }; struct GlobalContext : public ExecutionContext { void initGlobalContext(ExecutionEngine *e); Object *global; }; struct CatchContext : public ExecutionContext { void initCatchContext(ExecutionContext *p, const StringRef exceptionVarName, const ValueRef exceptionValue); SafeString exceptionVarName; SafeValue exceptionValue; }; struct WithContext : public ExecutionContext { Object *withObject; void initWithContext(ExecutionContext *p, ObjectRef with); }; inline CallContext *ExecutionContext::asCallContext() { return type >= Type_SimpleCallContext ? static_cast(this) : 0; } inline const CallContext *ExecutionContext::asCallContext() const { return type >= Type_SimpleCallContext ? static_cast(this) : 0; } } # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4property_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 1 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4property_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QVector" 2 # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h" 2 namespace QV4 { struct String; struct ExecutionEngine; struct Object; struct Identifier; struct PropertyHashData; struct PropertyHash { struct Entry { const Identifier *identifier; uint index; }; PropertyHashData *d; inline PropertyHash(); inline PropertyHash(const PropertyHash &other); inline ~PropertyHash(); void addEntry(const Entry &entry, int classSize); uint lookup(const Identifier *identifier) const; private: PropertyHash &operator=(const PropertyHash &other); }; struct PropertyHashData { PropertyHashData(int numBits); ~PropertyHashData() { free(entries); } int refCount; int alloc; int size; int numBits; PropertyHash::Entry *entries; }; inline PropertyHash::PropertyHash() { d = new PropertyHashData(3); } inline PropertyHash::PropertyHash(const PropertyHash &other) { d = other.d; ++d->refCount; } inline PropertyHash::~PropertyHash() { if (!--d->refCount) delete d; } template struct SharedInternalClassData { struct Private { Private(int alloc) : refcount(1), alloc(alloc), size(0) { data = new T [alloc]; } ~Private() { delete [] data; } int refcount; uint alloc; uint size; T *data; }; Private *d; inline SharedInternalClassData() { d = new Private(8); } inline SharedInternalClassData(const SharedInternalClassData &other) : d(other.d) { ++d->refcount; } inline ~SharedInternalClassData() { if (!--d->refcount) delete d; } void add(uint pos, T value) { if (pos < d->size) { ((!(d->refcount > 1)) ? qt_assert("d->refcount > 1","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h",143) : qt_noop()); Private *dd = new Private(pos + 8); memcpy(dd->data, d->data, pos*sizeof(T)); dd->size = pos + 1; dd->data[pos] = value; if (!--d->refcount) delete d; d = dd; return; } ((!(pos == d->size)) ? qt_assert("pos == d->size","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h",154) : qt_noop()); if (pos == d->alloc) { T *n = new T[d->alloc * 2]; memcpy(n, d->data, d->alloc*sizeof(T)); delete [] d->data; d->data = n; d->alloc *= 2; } d->data[pos] = value; ++d->size; } void set(uint pos, T value) { ((!(pos < d->size)) ? qt_assert("pos < d->size","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h",167) : qt_noop()); if (d->refcount > 1) { Private *dd = new Private(d->alloc); memcpy(dd->data, d->data, d->size*sizeof(T)); dd->size = d->size; if (!--d->refcount) delete d; d = dd; } d->data[pos] = value; } T *constData() const { return d->data; } T at(uint i) const { ((!(i < d->size)) ? qt_assert("i < d->size","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h",184) : qt_noop()); return d->data[i]; } T operator[] (uint i) { ((!(i < d->size)) ? qt_assert("i < d->size","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4internalclass_p.h",188) : qt_noop()); return d->data[i]; } private: SharedInternalClassData &operator=(const SharedInternalClassData &other); }; struct InternalClassTransition { union { Identifier *id; Object *prototype; }; int flags; enum { ProtoChange = 0x100 }; bool operator==(const InternalClassTransition &other) const { return id == other.id && flags == other.flags; } }; uint qHash(const QV4::InternalClassTransition &t, uint = 0); struct InternalClass { ExecutionEngine *engine; Object *prototype; PropertyHash propertyTable; SharedInternalClassData nameMap; SharedInternalClassData propertyData; typedef InternalClassTransition Transition; QHash transitions; InternalClass *m_sealed; InternalClass *m_frozen; uint size; InternalClass *changePrototype(Object *proto); InternalClass *addMember(StringRef string, PropertyAttributes data, uint *index = 0); InternalClass *addMember(String *string, PropertyAttributes data, uint *index = 0); InternalClass *changeMember(String *string, PropertyAttributes data, uint *index = 0); void removeMember(Object *object, Identifier *id); uint find(const StringRef string); uint find(const String *s); InternalClass *sealed(); InternalClass *frozen(); void destroy(); void markObjects(); private: friend struct ExecutionEngine; InternalClass(ExecutionEngine *engine) : engine(engine), prototype(0), m_sealed(0), m_frozen(0), size(0) {} InternalClass(const InternalClass &other); }; } # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4property_p.h" 2 namespace QV4 { struct FunctionObject; struct Property { union { Value value; struct { FunctionObject *get; FunctionObject *set; }; }; inline void fullyPopulated(PropertyAttributes *attrs) { if (!attrs->hasType()) { value = Primitive::undefinedValue(); } if (attrs->type() == PropertyAttributes::Accessor) { attrs->clearWritable(); if (get == (FunctionObject *)0x1) get = 0; if (set == (FunctionObject *)0x1) set = 0; } attrs->resolve(); } static inline Property fromValue(Value v) { Property pd; pd.value = v; return pd; } static inline Property fromAccessor(FunctionObject *getter, FunctionObject *setter) { Property pd; pd.get = getter; pd.set = setter; return pd; } static Property genericDescriptor() { Property pd; pd.value = Primitive::emptyValue(); return pd; } inline bool isSubset(const PropertyAttributes &attrs, const Property &other, PropertyAttributes otherAttrs) const; inline void merge(PropertyAttributes &attrs, const Property &other, PropertyAttributes otherAttrs); inline FunctionObject *getter() const { return get; } inline FunctionObject *setter() const { return set; } inline void setGetter(FunctionObject *g) { get = g; } inline void setSetter(FunctionObject *s) { set = s; } }; inline bool Property::isSubset(const PropertyAttributes &attrs, const Property &other, PropertyAttributes otherAttrs) const { if (attrs.type() != PropertyAttributes::Generic && attrs.type() != otherAttrs.type()) return false; if (attrs.hasEnumerable() && attrs.isEnumerable() != otherAttrs.isEnumerable()) return false; if (attrs.hasConfigurable() && attrs.isConfigurable() != otherAttrs.isConfigurable()) return false; if (attrs.hasWritable() && attrs.isWritable() != otherAttrs.isWritable()) return false; if (attrs.type() == PropertyAttributes::Data && !value.sameValue(other.value)) return false; if (attrs.type() == PropertyAttributes::Accessor) { if (get != other.get) return false; if (set != other.set) return false; } return true; } inline void Property::merge(PropertyAttributes &attrs, const Property &other, PropertyAttributes otherAttrs) { if (otherAttrs.hasEnumerable()) attrs.setEnumerable(otherAttrs.isEnumerable()); if (otherAttrs.hasConfigurable()) attrs.setConfigurable(otherAttrs.isConfigurable()); if (otherAttrs.hasWritable()) attrs.setWritable(otherAttrs.isWritable()); if (otherAttrs.type() == PropertyAttributes::Accessor) { attrs.setType(PropertyAttributes::Accessor); if (other.get) get = (other.get == (FunctionObject *)0x1) ? 0 : other.get; if (other.set) set = (other.set == (FunctionObject *)0x1) ? 0 : other.set; } else if (otherAttrs.type() == PropertyAttributes::Data){ attrs.setType(PropertyAttributes::Data); value = other.value; } } } # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qintrusivelist_p.h" 1 # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4engine_p.h" 2 namespace WTF { class BumpPointerAllocator; class PageAllocation; } class QV8Engine; class QQmlError; namespace QV4 { namespace Debugging { class Debugger; } namespace CompiledData { struct CompilationUnit; } } namespace QV4 { struct Function; struct Object; struct BooleanObject; struct NumberObject; struct StringObject; struct ArrayObject; struct DateObject; struct FunctionObject; struct BoundFunction; struct RegExpObject; struct ErrorObject; struct SyntaxErrorObject; struct ArgumentsObject; struct ExecutionContext; struct ExecutionEngine; class MemoryManager; class ExecutableAllocator; struct ObjectPrototype; struct StringPrototype; struct NumberPrototype; struct BooleanPrototype; struct ArrayPrototype; struct FunctionPrototype; struct DatePrototype; struct RegExpPrototype; struct ErrorPrototype; struct EvalErrorPrototype; struct RangeErrorPrototype; struct ReferenceErrorPrototype; struct SyntaxErrorPrototype; struct TypeErrorPrototype; struct URIErrorPrototype; struct VariantPrototype; struct SequencePrototype; struct EvalFunction; struct IdentifierTable; struct InternalClass; class MultiplyWrappedQObjectMap; class RegExp; class RegExpCache; struct QmlExtensions; struct Exception; struct __attribute__((visibility("default"))) ExecutionEngine { MemoryManager *memoryManager; ExecutableAllocator *executableAllocator; ExecutableAllocator *regExpAllocator; QScopedPointer iselFactory; ExecutionContext *current; GlobalContext *rootContext; SafeValue *jsStackTop; SafeValue *jsStackLimit; quintptr cStackLimit; WTF::BumpPointerAllocator *bumperPointerAllocator; enum { JSStackLimit = 4*1024*1024 }; WTF::PageAllocation *jsStack; SafeValue *jsStackBase; SafeValue *stackPush(uint nValues) { SafeValue *ptr = jsStackTop; jsStackTop = ptr + nValues; return ptr; } void stackPop(uint nValues) { jsStackTop -= nValues; } void pushForGC(Managed *m) { *jsStackTop = Value::fromManaged(m); ++jsStackTop; } Managed *popForGC() { --jsStackTop; return jsStackTop->managed(); } IdentifierTable *identifierTable; QV4::Debugging::Debugger *debugger; Object *globalObject; Function *globalCode; QV8Engine *v8Engine; SafeValue objectCtor; SafeValue stringCtor; SafeValue numberCtor; SafeValue booleanCtor; SafeValue arrayCtor; SafeValue functionCtor; SafeValue dateCtor; SafeValue regExpCtor; SafeValue errorCtor; SafeValue evalErrorCtor; SafeValue rangeErrorCtor; SafeValue referenceErrorCtor; SafeValue syntaxErrorCtor; SafeValue typeErrorCtor; SafeValue uRIErrorCtor; QQmlJS::MemoryPool classPool; InternalClass *emptyClass; InternalClass *objectClass; InternalClass *arrayClass; InternalClass *stringClass; InternalClass *booleanClass; InternalClass *numberClass; InternalClass *dateClass; InternalClass *functionClass; InternalClass *functionWithProtoClass; InternalClass *protoClass; InternalClass *regExpClass; InternalClass *regExpExecArrayClass; InternalClass *errorClass; InternalClass *evalErrorClass; InternalClass *rangeErrorClass; InternalClass *referenceErrorClass; InternalClass *syntaxErrorClass; InternalClass *typeErrorClass; InternalClass *uriErrorClass; InternalClass *argumentsObjectClass; InternalClass *strictArgumentsObjectClass; InternalClass *variantClass; InternalClass *sequenceClass; EvalFunction *evalFunction; FunctionObject *thrower; QVector argumentsAccessors; SafeString id_undefined; SafeString id_null; SafeString id_true; SafeString id_false; SafeString id_boolean; SafeString id_number; SafeString id_string; SafeString id_object; SafeString id_function; SafeString id_length; SafeString id_prototype; SafeString id_constructor; SafeString id_arguments; SafeString id_caller; SafeString id_callee; SafeString id_this; SafeString id___proto__; SafeString id_enumerable; SafeString id_configurable; SafeString id_writable; SafeString id_value; SafeString id_get; SafeString id_set; SafeString id_eval; SafeString id_uintMax; SafeString id_name; SafeString id_index; SafeString id_input; SafeString id_toString; SafeString id_valueOf; QSet compilationUnits; QMap allFunctions; quint32 m_engineId; RegExpCache *regExpCache; class ScarceResourceData { public: ScarceResourceData(const QVariant &data) : data(data) {} QVariant data; QIntrusiveListNode node; }; QIntrusiveList scarceResources; MultiplyWrappedQObjectMap *m_multiplyWrappedQObjects; ExecutionEngine(QQmlJS::EvalISelFactory *iselFactory = 0); ~ExecutionEngine(); void enableDebugger(); ExecutionContext *pushGlobalContext(); void pushContext(CallContext *context); ExecutionContext *popContext(); Returned *newBuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)); Returned *newBoundFunction(ExecutionContext *scope, FunctionObjectRef target, const ValueRef boundThis, const QVector &boundArgs); Returned *newObject(); Returned *newObject(InternalClass *internalClass); Returned *newString(const QString &s); String *newIdentifier(const QString &text); Returned *newStringObject(const ValueRef value); Returned *newNumberObject(const ValueRef value); Returned *newBooleanObject(const ValueRef value); Returned *newArrayObject(int count = 0); Returned *newArrayObject(const QStringList &list); Returned *newArrayObject(InternalClass *ic); Returned *newDateObject(const ValueRef value); Returned *newDateObject(const QDateTime &dt); Returned *newRegExpObject(const QString &pattern, int flags); Returned *newRegExpObject(Referenced re, bool global); Returned *newRegExpObject(const QRegExp &re); Returned *newErrorObject(const ValueRef value); Returned *newSyntaxErrorObject(const QString &message, const QString &fileName, int line, int column); Returned *newSyntaxErrorObject(const QString &message); Returned *newReferenceErrorObject(const QString &message); Returned *newReferenceErrorObject(const QString &message, const QString &fileName, int lineNumber, int columnNumber); Returned *newTypeErrorObject(const QString &message); Returned *newRangeErrorObject(const QString &message); Returned *newURIErrorObject(const ValueRef message); Returned *newVariantObject(const QVariant &v); Returned *newForEachIteratorObject(ExecutionContext *ctx, const ObjectRef o); Returned *qmlContextObject() const; StackTrace stackTrace(int frameLimit = -1) const; StackFrame currentStackFrame() const; QUrl resolvedUrl(const QString &file); void requireArgumentsAccessors(int n); void markObjects(); void initRootContext(); InternalClass *newClass(const InternalClass &other); Function *functionForProgramCounter(quintptr pc) const; QmlExtensions *qmlExtensions(); bool recheckCStackLimits(); SafeValue exceptionValue; quint32 hasException; StackTrace exceptionStackTrace; ReturnedValue throwException(const ValueRef value); ReturnedValue catchException(ExecutionContext *catchingContext, StackTrace *trace); static QQmlError catchExceptionAsQmlError(QV4::ExecutionContext *context); private: QmlExtensions *m_qmlExtensions; }; inline void ExecutionEngine::pushContext(CallContext *context) { context->parent = current; current = context; current->currentEvalCode = 0; } inline ExecutionContext *ExecutionEngine::popContext() { current = current->parent; return current; } struct ExecutionContextSaver { ExecutionEngine *engine; ExecutionContext *savedContext; ExecutionContextSaver(ExecutionContext *context) : engine(context->engine) , savedContext(context) { } ~ExecutionContextSaver() { engine->current = savedContext; } }; inline void Managed::mark(QV4::ExecutionEngine *engine) { if (markBit) return; markBit = 1; engine->pushForGC(this); } } # 53 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qtqmlglobal_p.h" 1 # 54 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" 2 namespace QV4 { inline bool Value::isString() const { if (!isManaged()) return false; return managed() && managed()->type == Managed::Type_String; } inline bool Value::isObject() const { if (!isManaged()) return false; return managed() && managed()->type != Managed::Type_String; } inline bool Value::isPrimitive() const { return !isObject(); } inline ExecutionEngine *Value::engine() const { Managed *m = asManaged(); return m ? m->engine() : 0; } inline void Value::mark(ExecutionEngine *e) const { if (!val) return; Managed *m = asManaged(); if (m) m->mark(e); } inline Primitive Primitive::nullValue() { Primitive v; v.val = quint64(_Null_Type) << Tag_Shift; return v; } inline Primitive Primitive::fromBoolean(bool b) { Primitive v; v.tag = _Boolean_Type; v.int_32 = (bool)b; return v; } inline Primitive Primitive::fromDouble(double d) { Primitive v; v.setDouble(d); return v; } inline Primitive Primitive::fromInt32(int i) { Primitive v; v.tag = _Integer_Type; v.int_32 = i; return v; } inline Primitive Primitive::fromUInt32(uint i) { Primitive v; if (i < 2147483647) { v.tag = _Integer_Type; v.int_32 = (int)i; } else { v.setDouble(i); } return v; } inline double Value::toNumber() const { if (integerCompatible()) return int_32; if (isDouble()) return doubleValue(); return toNumberImpl(); } inline int Value::toInt32() const { if (integerCompatible()) return int_32; double d; if (isDouble()) d = doubleValue(); else d = toNumberImpl(); const double D32 = 4294967296.0; const double D31 = D32 / 2.0; if ((d >= -D31 && d < D31)) return static_cast(d); return Primitive::toInt32(d); } inline unsigned int Value::toUInt32() const { return (unsigned int)toInt32(); } inline bool Value::toBoolean() const { switch (type()) { case Value::Undefined_Type: case Value::Null_Type: return false; case Value::Boolean_Type: case Value::Integer_Type: return (bool)int_32; case Value::Managed_Type: if (isString()) return stringValue()->toQString().length() > 0; return true; default: return doubleValue() && !std::isnan(doubleValue()); } } inline uint Value::asArrayIndex() const { if (!isNumber()) return (2147483647 * 2U + 1U); if (isInteger()) return int_32 >= 0 ? (uint)int_32 : (2147483647 * 2U + 1U); # 208 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h" double d = doubleValue(); uint idx = (uint)d; if (idx != d) return (2147483647 * 2U + 1U); return idx; } inline uint Value::asArrayLength(bool *ok) const { *ok = true; if (integerCompatible() && int_32 >= 0) return (uint)int_32; if (isDouble()) { double d = doubleValue(); uint idx = (uint)d; if (idx != d) { *ok = false; return (2147483647 * 2U + 1U); } return idx; } if (isString()) return stringValue()->toUInt(ok); uint idx = toUInt32(); double d = toNumber(); if (d != idx) { *ok = false; return (2147483647 * 2U + 1U); } return idx; } inline Object *Value::asObject() const { return isObject() ? objectValue() : 0; } inline FunctionObject *Value::asFunctionObject() const { return isObject() ? managed()->asFunctionObject() : 0; } inline NumberObject *Value::asNumberObject() const { return isObject() ? managed()->asNumberObject() : 0; } inline StringObject *Value::asStringObject() const { return isObject() ? managed()->asStringObject() : 0; } inline DateObject *Value::asDateObject() const { return isObject() ? managed()->asDateObject() : 0; } inline ArrayObject *Value::asArrayObject() const { return isObject() ? managed()->asArrayObject() : 0; } inline ErrorObject *Value::asErrorObject() const { return isObject() ? managed()->asErrorObject() : 0; } template inline T *Value::as() const { Managed *m = isObject() ? managed() : 0; return m ? m->as() : 0; } struct __attribute__((visibility("default"))) PersistentValuePrivate { PersistentValuePrivate(ReturnedValue v, ExecutionEngine *engine = 0, bool weak = false); virtual ~PersistentValuePrivate(); SafeValue value; uint refcount; bool weak; QV4::ExecutionEngine *engine; PersistentValuePrivate **prev; PersistentValuePrivate *next; void init(); void removeFromList(); void ref() { ++refcount; } void deref(); PersistentValuePrivate *detach(const ReturnedValue value, bool weak = false); bool checkEngine(QV4::ExecutionEngine *otherEngine) { if (!engine) { ((!(!value . isObject())) ? qt_assert("!value.isObject()","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h",298) : qt_noop()); engine = otherEngine; } return (engine == otherEngine); } }; class __attribute__((visibility("default"))) PersistentValue { public: PersistentValue() : d(0) {} PersistentValue(const PersistentValue &other); PersistentValue &operator=(const PersistentValue &other); PersistentValue(const ValueRef val); PersistentValue(ReturnedValue val); template PersistentValue(Returned *obj); template PersistentValue(const Referenced obj); PersistentValue &operator=(const ValueRef other); PersistentValue &operator =(ReturnedValue other); template PersistentValue &operator=(Returned *obj); template PersistentValue &operator=(const Referenced obj); ~PersistentValue(); ReturnedValue value() const { return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue()); } ExecutionEngine *engine() { if (!d) return 0; if (d->engine) return d->engine; Managed *m = d->value.asManaged(); return m ? m->engine() : 0; } bool isUndefined() const { return !d || d->value.isUndefined(); } bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); } void clear() { *this = PersistentValue(); } private: friend struct ValueRef; PersistentValuePrivate *d; }; class __attribute__((visibility("default"))) WeakValue { public: WeakValue() : d(0) {} WeakValue(const ValueRef val); WeakValue(const WeakValue &other); WeakValue(ReturnedValue val); template WeakValue(Returned *obj); WeakValue &operator=(const WeakValue &other); WeakValue &operator=(const ValueRef other); WeakValue &operator =(const ReturnedValue &other); template WeakValue &operator=(Returned *obj); ~WeakValue(); ReturnedValue value() const { return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue()); } ExecutionEngine *engine() { if (!d) return 0; if (d->engine) return d->engine; Managed *m = d->value.asManaged(); return m ? m->engine() : 0; } bool isUndefined() const { return !d || d->value.isUndefined(); } bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); } void clear() { *this = WeakValue(); } void markOnce(ExecutionEngine *e); private: friend struct ValueRef; PersistentValuePrivate *d; }; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4value_p.h" 2 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h" 2 template class QHash; class QQmlGuardImpl; class QQmlCompiledData; class QQmlAbstractBinding; class QQmlAbstractBoundSignal; class QQmlContext; class QQmlPropertyCache; class QQmlContextData; class QQmlNotifier; class QQmlDataExtended; class QQmlNotifierEndpoint; class __attribute__((visibility("default"))) QQmlData : public QAbstractDeclarativeData { public: QQmlData() : ownedByQml1(false), ownMemory(true), ownContext(false), indestructible(true), explicitIndestructibleSet(false), hasTaintedV8Object(false), isQueuedForDeletion(false), rootObjectInCreation(false), hasVMEMetaObject(false), parentFrozen(false), notifyList(0), context(0), outerContext(0), bindings(0), signalHandlers(0), nextContextObject(0), prevContextObject(0), bindingBitsSize(0), bindingBits(0), lineNumber(0), columnNumber(0), compiledData(0), deferredData(0), jsEngineId(0), propertyCache(0), guards(0), extendedData(0) { init(); } static inline void init() { static bool initialized = false; if (!initialized) { initialized = true; QAbstractDeclarativeData::destroyed = destroyed; QAbstractDeclarativeData::parentChanged = parentChanged; QAbstractDeclarativeData::signalEmitted = signalEmitted; QAbstractDeclarativeData::receivers = receivers; QAbstractDeclarativeData::isSignalConnected = isSignalConnected; } } static void destroyed(QAbstractDeclarativeData *, QObject *); static void parentChanged(QAbstractDeclarativeData *, QObject *, QObject *); static void signalEmitted(QAbstractDeclarativeData *, QObject *, int, void **); static int receivers(QAbstractDeclarativeData *, const QObject *, int); static bool isSignalConnected(QAbstractDeclarativeData *, const QObject *, int); void destroyed(QObject *); void parentChanged(QObject *, QObject *); void setImplicitDestructible() { if (!explicitIndestructibleSet) indestructible = false; } quint32 ownedByQml1:1; quint32 ownMemory:1; quint32 ownContext:1; quint32 indestructible:1; quint32 explicitIndestructibleSet:1; quint32 hasTaintedV8Object:1; quint32 isQueuedForDeletion:1; quint32 rootObjectInCreation:1; quint32 hasVMEMetaObject:1; quint32 parentFrozen:1; quint32 dummy:22; struct NotifyList { quint64 connectionMask; quint16 maximumTodoIndex; quint16 notifiesSize; QQmlNotifierEndpoint *todo; QQmlNotifierEndpoint**notifies; void layout(); private: void layout(QQmlNotifierEndpoint*); }; NotifyList *notifyList; inline QQmlNotifierEndpoint *notify(int index); void addNotify(int index, QQmlNotifierEndpoint *); int endpointCount(int index); bool signalHasEndpoint(int index); void disconnectNotifiers(); QQmlContextData *context; QQmlContextData *outerContext; QQmlAbstractBinding *bindings; QQmlAbstractBoundSignal *signalHandlers; QQmlData *nextContextObject; QQmlData**prevContextObject; int bindingBitsSize; quint32 *bindingBits; inline bool hasBindingBit(int) const; void clearBindingBit(int); void setBindingBit(QObject *obj, int); inline bool hasPendingBindingBit(int) const; void setPendingBindingBit(QObject *obj, int); void clearPendingBindingBit(int); quint16 lineNumber; quint16 columnNumber; struct DeferredData { unsigned int deferredIdx; QQmlCompiledData *compiledData; QQmlContextData *context; }; QQmlCompiledData *compiledData; DeferredData *deferredData; quint32 jsEngineId; QV4::WeakValue jsWrapper; QQmlPropertyCache *propertyCache; QQmlGuardImpl *guards; static QQmlData *get(const QObject *object, bool create = false) { QObjectPrivate *priv = QObjectPrivate::get(const_cast(object)); if (priv->wasDeleted) { ((!(!create)) ? qt_assert("!create","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h",196) : qt_noop()); return 0; } else if (priv->declarativeData) { return static_cast(priv->declarativeData); } else if (create) { priv->declarativeData = new QQmlData; return static_cast(priv->declarativeData); } else { return 0; } } static bool keepAliveDuringGarbageCollection(const QObject *object) { QQmlData *ddata = get(object); if (!ddata || ddata->indestructible || ddata->rootObjectInCreation) return true; return false; } bool hasExtendedData() const { return extendedData != 0; } QHash *attachedProperties() const; static inline bool wasDeleted(QObject *); static void markAsDeleted(QObject *); static void setQueuedForDeletion(QObject *); static inline void flushPendingBinding(QObject *, int coreIndex); private: mutable QQmlDataExtended *extendedData; void flushPendingBindingImpl(int coreIndex); }; bool QQmlData::wasDeleted(QObject *object) { if (!object) return true; QObjectPrivate *priv = QObjectPrivate::get(object); if (priv->wasDeleted) return true; return priv->declarativeData && static_cast(priv->declarativeData)->isQueuedForDeletion; } QQmlNotifierEndpoint *QQmlData::notify(int index) { ((!(index <= 0xFFFF)) ? qt_assert("index <= 0xFFFF","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmldata_p.h",247) : qt_noop()); if (!notifyList || !(notifyList->connectionMask & (1ULL << quint64(index % 64)))) { return 0; } else if (index < notifyList->notifiesSize) { return notifyList->notifies[index]; } else if (index <= notifyList->maximumTodoIndex) { notifyList->layout(); } if (index < notifyList->notifiesSize) { return notifyList->notifies[index]; } else { return 0; } } bool QQmlData::hasBindingBit(int coreIndex) const { int bit = coreIndex * 2; if (bindingBitsSize > bit) return bindingBits[bit / 32] & (1 << (bit % 32)); else return false; } bool QQmlData::hasPendingBindingBit(int coreIndex) const { int bit = coreIndex * 2 + 1; if (bindingBitsSize > bit) return bindingBits[bit / 32] & (1 << (bit % 32)); else return false; } void QQmlData::flushPendingBinding(QObject *o, int coreIndex) { QQmlData *data = QQmlData::get(o, false); if (data && data->hasPendingBindingBit(coreIndex)) data->flushPendingBindingImpl(coreIndex); } # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlnotifier_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetaobject.h" 1 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlnotifier_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/qmetaobject_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qobjectdefs.h" 1 # 58 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/qobject_p.h" 1 # 60 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvarlengtharray.h" 1 # 62 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h" 2 enum PropertyFlags { Invalid = 0x00000000, Readable = 0x00000001, Writable = 0x00000002, Resettable = 0x00000004, EnumOrFlag = 0x00000008, StdCppSet = 0x00000100, Constant = 0x00000400, Final = 0x00000800, Designable = 0x00001000, ResolveDesignable = 0x00002000, Scriptable = 0x00004000, ResolveScriptable = 0x00008000, Stored = 0x00010000, ResolveStored = 0x00020000, Editable = 0x00040000, ResolveEditable = 0x00080000, User = 0x00100000, ResolveUser = 0x00200000, Notify = 0x00400000, Revisioned = 0x00800000 }; enum MethodFlags { AccessPrivate = 0x00, AccessProtected = 0x01, AccessPublic = 0x02, AccessMask = 0x03, MethodMethod = 0x00, MethodSignal = 0x04, MethodSlot = 0x08, MethodConstructor = 0x0c, MethodTypeMask = 0x0c, MethodCompatibility = 0x10, MethodCloned = 0x20, MethodScriptable = 0x40, MethodRevisioned = 0x80 }; enum MetaObjectFlags { DynamicMetaObject = 0x01, RequiresVariantMetaObject = 0x02 }; enum MetaDataFlags { IsUnresolvedType = 0x80000000, TypeNameIndexMask = 0x7FFFFFFF }; extern int qMetaTypeTypeInternal(const char *); class QArgumentType { public: QArgumentType(int type) : _type(type) {} QArgumentType(const QByteArray &name) : _type(qMetaTypeTypeInternal(name.constData())), _name(name) {} QArgumentType() : _type(0) {} int type() const { return _type; } QByteArray name() const { if (_type && _name.isEmpty()) const_cast(this)->_name = QMetaType::typeName(_type); return _name; } bool operator==(const QArgumentType &other) const { if (_type) return _type == other._type; else if (other._type) return false; else return _name == other._name; } bool operator!=(const QArgumentType &other) const { if (_type) return _type != other._type; else if (other._type) return true; else return _name != other._name; } private: int _type; QByteArray _name; }; typedef QVarLengthArray QArgumentTypeArray; class QMetaMethodPrivate; class QMutex; struct QMetaObjectPrivate { enum { OutputRevision = 7 }; int revision; int className; int classInfoCount, classInfoData; int methodCount, methodData; int propertyCount, propertyData; int enumeratorCount, enumeratorData; int constructorCount, constructorData; int flags; int signalCount; static inline const QMetaObjectPrivate *get(const QMetaObject *metaobject) { return reinterpret_cast(metaobject->d.data); } static int originalClone(const QMetaObject *obj, int local_method_index); static QByteArray decodeMethodSignature(const char *signature, QArgumentTypeArray &types); static int indexOfSignalRelative(const QMetaObject **baseObject, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSlotRelative(const QMetaObject **m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSignal(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfSlot(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfMethod(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); static int indexOfConstructor(const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types); __attribute__((visibility("default"))) static QMetaMethod signal(const QMetaObject *m, int signal_index); __attribute__((visibility("default"))) static int signalOffset(const QMetaObject *m); __attribute__((visibility("default"))) static int absoluteSignalCount(const QMetaObject *m); __attribute__((visibility("default"))) static int signalIndex(const QMetaMethod &m); static bool checkConnectArgs(int signalArgc, const QArgumentType *signalTypes, int methodArgc, const QArgumentType *methodTypes); static bool checkConnectArgs(const QMetaMethodPrivate *signal, const QMetaMethodPrivate *method); static QList parameterTypeNamesFromSignature(const char *signature); enum DisconnectType { DisconnectAll, DisconnectOne }; static void memberIndexes(const QObject *obj, const QMetaMethod &member, int *signalIndex, int *methodIndex); static QObjectPrivate::Connection *connect(const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index_relative, const QMetaObject *rmeta = 0, int type = 0, int *types = 0); static bool disconnect(const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index, void **slot, DisconnectType = DisconnectAll); static inline bool disconnectHelper(QObjectPrivate::Connection *c, const QObject *receiver, int method_index, void **slot, QMutex *senderMutex, DisconnectType = DisconnectAll); }; enum { MetaObjectPrivateFieldCount = sizeof(QMetaObjectPrivate) / sizeof(int) }; static inline bool is_ident_char(char s) { return ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9') || s == '_' ); } static inline bool is_space(char s) { return (s == ' ' || s == '\t'); } # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/5.2.0/QtCore/private/qmetaobject_p.h" 2 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlnotifier_p.h" 2 class QQmlNotifierEndpoint; class __attribute__((visibility("default"))) QQmlNotifier { public: inline QQmlNotifier(); inline ~QQmlNotifier(); inline void notify(); private: friend class QQmlData; friend class QQmlNotifierEndpoint; friend class QQmlThreadNotifierProxyObject; static void emitNotify(QQmlNotifierEndpoint *, void **a); QQmlNotifierEndpoint *endpoints; }; class QQmlEngine; class QQmlNotifierEndpoint { public: inline QQmlNotifierEndpoint(); inline ~QQmlNotifierEndpoint(); enum Callback { None = 0, QQmlBoundSignal = 1, QQmlJavaScriptExpressionGuard = 2, QQmlVMEMetaObjectEndpoint = 3, QV4BindingsSubscription = 4 }; inline void setCallback(Callback c) { callback = c; } inline bool isConnected(); inline bool isConnected(QObject *source, int sourceSignal); inline bool isConnected(QQmlNotifier *); void connect(QObject *source, int sourceSignal, QQmlEngine *engine); inline void connect(QQmlNotifier *); inline void disconnect(); inline bool isNotifying() const; inline void cancelNotify(); private: friend class QQmlData; friend class QQmlNotifier; qintptr senderPtr; inline QObject *senderAsObject() const; inline QQmlNotifier *senderAsNotifier() const; Callback callback:4; signed int sourceSignal:28; QQmlNotifierEndpoint *next; QQmlNotifierEndpoint **prev; }; QQmlNotifier::QQmlNotifier() : endpoints(0) { } QQmlNotifier::~QQmlNotifier() { QQmlNotifierEndpoint *endpoint = endpoints; while (endpoint) { QQmlNotifierEndpoint *n = endpoint; endpoint = n->next; if (n->isNotifying()) *((qintptr *)(n->senderPtr & ~0x1)) = 0; n->next = 0; n->prev = 0; n->senderPtr = 0; n->sourceSignal = -1; } endpoints = 0; } void QQmlNotifier::notify() { void *args[] = { 0 }; if (endpoints) emitNotify(endpoints, args); } QQmlNotifierEndpoint::QQmlNotifierEndpoint() : senderPtr(0), callback(None), sourceSignal(-1), next(0), prev(0) { } QQmlNotifierEndpoint::~QQmlNotifierEndpoint() { disconnect(); } bool QQmlNotifierEndpoint::isConnected() { return prev != 0; } bool QQmlNotifierEndpoint::isConnected(QObject *source, int sourceSignal) { return this->sourceSignal != -1 && senderAsObject() == source && this->sourceSignal == sourceSignal; } bool QQmlNotifierEndpoint::isConnected(QQmlNotifier *notifier) { return sourceSignal == -1 && senderAsNotifier() == notifier; } void QQmlNotifierEndpoint::connect(QQmlNotifier *notifier) { disconnect(); next = notifier->endpoints; if (next) { next->prev = &next; } notifier->endpoints = this; prev = ¬ifier->endpoints; senderPtr = qintptr(notifier); } void QQmlNotifierEndpoint::disconnect() { if (next) next->prev = prev; if (prev) *prev = next; if (sourceSignal != -1) { QObject * const obj = senderAsObject(); QObjectPrivate * const priv = QObjectPrivate::get(obj); priv->disconnectNotify(QMetaObjectPrivate::signal(obj->metaObject(), sourceSignal)); } if (isNotifying()) *((qintptr *)(senderPtr & ~0x1)) = 0; next = 0; prev = 0; senderPtr = 0; sourceSignal = -1; } bool QQmlNotifierEndpoint::isNotifying() const { return senderPtr & 0x1; } void QQmlNotifierEndpoint::cancelNotify() { if (isNotifying()) { qintptr sp = *((qintptr *)(senderPtr & ~0x1)); *((qintptr *)(senderPtr & ~0x1)) = 0; senderPtr = sp; } } QObject *QQmlNotifierEndpoint::senderAsObject() const { return isNotifying()?((QObject *)(*((qintptr *)(senderPtr & ~0x1)))):((QObject *)senderPtr); } QQmlNotifier *QQmlNotifierEndpoint::senderAsNotifier() const { return isNotifying()?((QQmlNotifier *)(*((qintptr *)(senderPtr & ~0x1)))):((QQmlNotifier *)senderPtr); } # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qhashedstring_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4string_p.h" 1 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4scopedvalue_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4scopedvalue_p.h" 1 namespace QV4 { struct ScopedValue; struct Scope { explicit Scope(ExecutionContext *ctx) : engine(ctx->engine) , size(0) { mark = engine->jsStackTop; } explicit Scope(ExecutionEngine *e) : engine(e) { mark = engine->jsStackTop; } ~Scope() { ((!(engine ->jsStackTop >= mark)) ? qt_assert("engine->jsStackTop >= mark","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4scopedvalue_p.h",74) : qt_noop()); memset(mark, 0, (engine->jsStackTop - mark)*sizeof(SafeValue)); engine->jsStackTop = mark; } SafeValue *alloc(int nValues) { SafeValue *ptr = engine->jsStackTop; engine->jsStackTop += nValues; size += nValues; return ptr; } bool hasException() const { return engine->hasException; } ExecutionEngine *engine; SafeValue *mark; mutable int size; private: Scope(const Scope &) = delete; Scope &operator=(const Scope &) = delete; }; struct ValueRef; struct ScopedValue { ScopedValue(const Scope &scope) { ptr = scope.engine->jsStackTop++; ++scope.size; } ScopedValue(const Scope &scope, const Value &v) { ptr = scope.engine->jsStackTop++; *ptr = v; ++scope.size; } ScopedValue(const Scope &scope, Managed *m) { ptr = scope.engine->jsStackTop++; ptr->val = m->asReturnedValue(); ++scope.size; } ScopedValue(const Scope &scope, const ReturnedValue &v) { ptr = scope.engine->jsStackTop++; ptr->val = v; ++scope.size; } template ScopedValue(const Scope &scope, Returned *t) { ptr = scope.engine->jsStackTop++; *ptr = t->getPointer() ? Value::fromManaged(t->getPointer()) : Primitive::undefinedValue(); ++scope.size; } ScopedValue &operator=(const Value &v) { *ptr = v; return *this; } ScopedValue &operator=(Managed *m) { ptr->val = m->asReturnedValue(); return *this; } ScopedValue &operator=(const ReturnedValue &v) { ptr->val = v; return *this; } template ScopedValue &operator=(Returned *t) { *ptr = t->getPointer() ? Value::fromManaged(t->getPointer()) : Primitive::undefinedValue(); return *this; } ScopedValue &operator=(const ScopedValue &other) { *ptr = *other.ptr; return *this; } SafeValue *operator->() { return ptr; } const SafeValue *operator->() const { return ptr; } ReturnedValue asReturnedValue() const { return ptr->val; } SafeValue *ptr; }; template struct Scoped { enum _Convert { Convert }; enum _Cast { Cast }; inline void setPointer(Managed *p) { ptr->val = (quint64)p; } Scoped(const Scope &scope) { ptr = scope.engine->jsStackTop++; ++scope.size; } Scoped(const Scope &scope, const Value &v) { ptr = scope.engine->jsStackTop++; setPointer(value_cast(v)); ++scope.size; } Scoped(const Scope &scope, const ScopedValue &v) { ptr = scope.engine->jsStackTop++; setPointer(value_cast(*v.ptr)); ++scope.size; } Scoped(const Scope &scope, const Value &v, _Convert) { ptr = scope.engine->jsStackTop++; ptr->val = value_convert(scope.engine->current, v); ++scope.size; } Scoped(const Scope &scope, const ValueRef &v); Scoped(const Scope &scope, T *t) { ptr = scope.engine->jsStackTop++; setPointer(t); ++scope.size; } template Scoped(const Scope &scope, X *t, _Cast) { ptr = scope.engine->jsStackTop++; setPointer(managed_cast(t)); ++scope.size; } template Scoped(const Scope &scope, Returned *x) { ptr = scope.engine->jsStackTop++; setPointer(Returned::getPointer(x)); ++scope.size; } Scoped(const Scope &scope, const ReturnedValue &v) { ptr = scope.engine->jsStackTop++; setPointer(value_cast(QV4::Value::fromReturnedValue(v))); ++scope.size; } Scoped(const Scope &scope, const ReturnedValue &v, _Convert) { ptr = scope.engine->jsStackTop++; ptr->val = value_convert(scope.engine->current, QV4::Value::fromReturnedValue(v)); ++scope.size; } Scoped &operator=(const Value &v) { setPointer(value_cast(v)); return *this; } Scoped &operator=(const ValueRef &v); Scoped &operator=(const ReturnedValue &v) { setPointer(value_cast(QV4::Value::fromReturnedValue(v))); return *this; } Scoped &operator=(const Scoped &other) { *ptr = *other.ptr; return *this; } Scoped &operator=(T *t) { setPointer(t); return *this; } template Scoped &operator=(Returned *x) { setPointer(Returned::getPointer(x)); return *this; } T *operator->() { return static_cast(ptr->managed()); } bool operator!() const { return !ptr->managed(); } operator void *() const { return ptr->managed(); } T *getPointer() { return static_cast(ptr->managed()); } ReturnedValue asReturnedValue() const { return ptr->val ? ptr->val : Primitive::undefinedValue().asReturnedValue(); } SafeValue *ptr; }; struct CallData { int argc; uint tag; inline ReturnedValue argument(int i) { return i < argc ? args[i].asReturnedValue() : Primitive::undefinedValue().asReturnedValue(); } SafeValue thisObject; SafeValue args[1]; }; struct ScopedCallData { ScopedCallData(Scope &scope, int argc) { int size = qMax(argc, (int)QV4::Global::ReservedArgumentCount) + ((size_t)((((char *)&(((QV4::CallData *)64)->args)) - 64)))/sizeof(QV4::SafeValue); ptr = reinterpret_cast(scope.engine->stackPush(size)); ptr->tag = QV4::Value::Integer_Type; ptr->argc = argc; scope.size += size; for (int ii = 0; ii < qMax(argc, (int)QV4::Global::ReservedArgumentCount); ++ii) ptr->args[ii] = QV4::Primitive::undefinedValue(); } CallData *operator->() { return ptr; } operator CallData *() const { return ptr; } CallData *ptr; }; struct ValueRef { ValueRef(const ScopedValue &v) : ptr(v.ptr) {} template ValueRef(const Scoped &v) : ptr(v.ptr) {} ValueRef(const PersistentValue &v) : ptr(&v.d->value) {} ValueRef(PersistentValuePrivate *p) : ptr(&p->value) {} ValueRef(SafeValue &v) { ptr = &v; } ValueRef &operator=(const ScopedValue &o) { *ptr = *o.ptr; return *this; } ValueRef &operator=(const ValueRef &o) { *ptr = *o.ptr; return *this; } ValueRef &operator=(const Value &v) { *ptr = v; return *this; } ValueRef &operator=(const ReturnedValue &v) { ptr->val = v; return *this; } template ValueRef &operator=(Returned *v) { ptr->val = v->asReturnedValue(); return *this; } operator const Value *() const { return ptr; } const Value *operator->() const { return ptr; } operator Value *() { return ptr; } SafeValue *operator->() { return ptr; } static ValueRef fromRawValue(Value *v) { return ValueRef(v); } static const ValueRef fromRawValue(const Value *v) { return ValueRef(const_cast(v)); } ReturnedValue asReturnedValue() const { return ptr->val; } ValueRef(Value *v) { ptr = reinterpret_cast(v); } private: SafeValue *ptr; }; template struct Referenced { Referenced(const Scoped &v) : ptr(v.ptr) {} Referenced(Safe &v) { ptr = &v; } Referenced(SafeValue &v) { ptr = value_cast(v) ? &v : 0; } Referenced &operator=(const Referenced &o) { *ptr = *o.ptr; return *this; } Referenced &operator=(T *t) { ptr->m = t; return *this; } Referenced &operator=(Returned *t) { ptr->m = t->getPointer(); return *this; } operator const T *() const { return ptr ? static_cast(ptr->managed()) : 0; } const T *operator->() const { return static_cast(ptr->managed()); } operator T *() { return ptr ? static_cast(ptr->managed()) : 0; } T *operator->() { return static_cast(ptr->managed()); } T *getPointer() const { return static_cast(ptr->managed()); } ReturnedValue asReturnedValue() const { return ptr ? ptr->val : Primitive::undefinedValue().asReturnedValue(); } operator Returned *() const { return ptr ? Returned::create(getPointer()) : 0; } bool operator==(const Referenced &other) { if (ptr == other.ptr) return true; return ptr && other.ptr && ptr->m == other.ptr->m; } bool operator!=(const Referenced &other) { if (ptr == other.ptr) return false; return !ptr || ptr->m != other.ptr->m; } bool operator!() const { return !ptr || !ptr->managed(); } static Referenced null() { return Referenced(Null); } bool isNull() const { return !ptr; } private: enum _Null { Null }; Referenced(_Null) { ptr = 0; } SafeValue *ptr; }; typedef Referenced StringRef; typedef Referenced ObjectRef; typedef Referenced FunctionObjectRef; template inline Scoped::Scoped(const Scope &scope, const ValueRef &v) { ptr = scope.engine->jsStackTop++; setPointer(value_cast(*v.operator ->())); ++scope.size; } template inline Scoped &Scoped::operator=(const ValueRef &v) { setPointer(value_cast(*v.operator ->())); return *this; } struct CallDataRef { CallDataRef(const ScopedCallData &c) : ptr(c.ptr) {} CallDataRef(CallData *v) { ptr = v; } CallDataRef &operator=(const ScopedCallData &c) { *ptr = *c.ptr; return *this; } CallDataRef &operator=(const CallDataRef &o) { *ptr = *o.ptr; return *this; } operator const CallData *() const { return ptr; } const CallData *operator->() const { return ptr; } operator CallData *() { return ptr; } CallData *operator->() { return ptr; } private: CallData *ptr; }; struct Encode { static ReturnedValue undefined() { return quint64(Value::Undefined_Type) << Value::Tag_Shift; } static ReturnedValue null() { return quint64(Value::_Null_Type) << Value::Tag_Shift; } Encode(bool b) { val = (quint64(Value::_Boolean_Type) << Value::Tag_Shift) | (uint)b; } Encode(double d) { Value v; v.setDouble(d); val = v.val; } Encode(int i) { val = (quint64(Value::_Integer_Type) << Value::Tag_Shift) | (uint)i; } Encode(uint i) { if (i <= 2147483647) { val = (quint64(Value::_Integer_Type) << Value::Tag_Shift) | i; } else { Value v; v.setDouble(i); val = v.val; } } Encode(ReturnedValue v) { val = v; } template Encode(Returned *t) { val = t->getPointer()->asReturnedValue(); } operator ReturnedValue() const { return val; } quint64 val; private: Encode(void *); }; template inline Value &Value::operator=(Returned *t) { val = t->getPointer()->asReturnedValue(); return *this; } inline SafeValue &SafeValue::operator =(const ScopedValue &v) { val = v.ptr->val; return *this; } template inline SafeValue &SafeValue::operator=(Returned *t) { val = t->getPointer()->asReturnedValue(); return *this; } template inline SafeValue &SafeValue::operator=(const Scoped &t) { val = t.ptr->val; return *this; } inline SafeValue &SafeValue::operator=(const ValueRef v) { val = v.asReturnedValue(); return *this; } template inline Returned *SafeValue::as() { return Returned::create(value_cast(*this)); } template inline Referenced SafeValue::asRef() { return Referenced(*this); } template inline Safe &Safe::operator =(T *t) { val = t->asReturnedValue(); return *this; } template inline Safe &Safe::operator =(const Scoped &v) { val = v.ptr->val; return *this; } template inline Safe &Safe::operator=(Returned *t) { val = t->getPointer()->asReturnedValue(); return *this; } template inline Safe &Safe::operator =(const Referenced &v) { val = v.asReturnedValue(); return *this; } template inline Safe &Safe::operator=(const Safe &t) { val = t.val; return *this; } template inline Returned * Safe::ret() const { return Returned::create(static_cast(managed())); } inline Primitive::operator ValueRef() { return ValueRef(this); } template PersistentValue::PersistentValue(Returned *obj) : d(new PersistentValuePrivate(QV4::Value::fromManaged(obj->getPointer()))) { } template inline PersistentValue::PersistentValue(const Referenced obj) : d(new PersistentValuePrivate(*obj.ptr)) { } template inline PersistentValue &PersistentValue::operator=(Returned *obj) { return operator=(QV4::Value::fromManaged(obj->getPointer()).asReturnedValue()); } template inline PersistentValue &PersistentValue::operator=(const Referenced obj) { return operator=(*obj.ptr); } template inline WeakValue::WeakValue(Returned *obj) : d(new PersistentValuePrivate(QV4::Value::fromManaged(obj->getPointer()), 0, true)) { } template inline WeakValue &WeakValue::operator=(Returned *obj) { return operator=(QV4::Value::fromManaged(obj->getPointer()).asReturnedValue()); } inline ReturnedValue CallContext::argument(int i) { return i < callData->argc ? callData->args[i].asReturnedValue() : Primitive::undefinedValue().asReturnedValue(); } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4scopedvalue_p.h" 2 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qflagpointer_p.h" 1 # 62 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" 2 class QHashedStringRef; class QHashedString : public QString { public: inline QHashedString(); inline QHashedString(const QString &string); inline QHashedString(const QString &string, quint32); inline QHashedString(const QHashedString &string); inline QHashedString &operator=(const QHashedString &string); inline bool operator==(const QHashedString &string) const; inline bool operator==(const QHashedStringRef &string) const; inline quint32 hash() const; inline quint32 existingHash() const; static bool compare(const QChar *lhs, const QChar *rhs, int length); static inline bool compare(const QChar *lhs, const char *rhs, int length); static inline bool compare(const char *lhs, const char *rhs, int length); private: friend class QHashedStringRef; friend class QStringHashNode; void computeHash() const; mutable quint32 m_hash; }; class QHashedCStringRef; class QHashedStringRef { public: inline QHashedStringRef(); inline QHashedStringRef(const QString &); inline QHashedStringRef(const QStringRef &); inline QHashedStringRef(const QChar *, int); inline QHashedStringRef(const QChar *, int, quint32); inline QHashedStringRef(const QHashedString &); inline QHashedStringRef(const QHashedStringRef &); inline QHashedStringRef &operator=(const QHashedStringRef &); inline bool operator==(const QString &string) const; inline bool operator==(const QHashedString &string) const; inline bool operator==(const QHashedStringRef &string) const; inline bool operator==(const QHashedCStringRef &string) const; inline bool operator!=(const QString &string) const; inline bool operator!=(const QHashedString &string) const; inline bool operator!=(const QHashedStringRef &string) const; inline bool operator!=(const QHashedCStringRef &string) const; inline quint32 hash() const; inline QChar *data(); inline const QChar &at(int) const; inline const QChar *constData() const; bool startsWith(const QString &) const; bool endsWith(const QString &) const; int indexOf(const QChar &, int from=0) const; QHashedStringRef mid(int, int) const; inline bool isEmpty() const; inline int length() const; inline bool startsWithUpper() const; QString toString() const; inline bool isLatin1() const; private: friend class QHashedString; void computeHash() const; const QChar *m_data; int m_length; mutable quint32 m_hash; }; class QHashedCStringRef { public: inline QHashedCStringRef(); inline QHashedCStringRef(const char *, int); inline QHashedCStringRef(const char *, int, quint32); inline QHashedCStringRef(const QHashedCStringRef &); inline quint32 hash() const; inline const char *constData() const; inline int length() const; QString toUtf16() const; inline int utf16length() const; inline void writeUtf16(QChar *) const; inline void writeUtf16(quint16 *) const; private: friend class QHashedStringRef; void computeHash() const; const char *m_data; int m_length; mutable quint32 m_hash; }; class QStringHashData; class QStringHashNode { public: QStringHashNode() : length(0), hash(0), symbolId(0), ckey(0) { } QStringHashNode(const QHashedString &key) : length(key.length()), hash(key.hash()), symbolId(0) { strData = const_cast(key).data_ptr(); setQString(true); strData->ref.ref(); } QStringHashNode(const QHashedCStringRef &key) : length(key.length()), hash(key.hash()), symbolId(0), ckey(key.constData()) { } QStringHashNode(const QStringHashNode &o) : length(o.length), hash(o.hash), symbolId(o.symbolId), ckey(o.ckey) { setQString(o.isQString()); if (isQString()) { strData->ref.ref(); } } ~QStringHashNode() { if (isQString()) { if (!strData->ref.deref()) free(strData); } } QFlagPointer next; qint32 length; quint32 hash; quint32 symbolId; union { const char *ckey; QStringData *strData; }; inline QHashedString key() const { if (isQString()) return QHashedString(QString((QChar *)strData->data(), length), hash); return QHashedString(QString::fromLatin1(ckey, length), hash); } bool isQString() const { return next.flag(); } void setQString(bool v) { if (v) next.setFlag(); else next.clearFlag(); } inline char *cStrData() const { return (char *)ckey; } inline quint16 *utf16Data() const { return (quint16 *)strData->data(); } inline bool equals(const QV4::ValueRef string) const { QString s = string->toQStringNoThrow(); if (isQString()) { QStringDataPtr dd; dd.ptr = strData; strData->ref.ref(); return QString(dd) == s; } else { return QLatin1String(cStrData(), length) == s; } } inline bool equals(const QV4::String *string) const { if (length != string->length() || hash != string->hashValue()) return false; if (isQString()) { QStringDataPtr dd; dd.ptr = strData; strData->ref.ref(); return QString(dd) == string->toQString(); } else { return QLatin1String(cStrData(), length) == string->toQString(); } } inline bool equals(const QHashedStringRef &string) const { return length == string.length() && hash == string.hash() && (isQString()?QHashedString::compare(string.constData(), (QChar *)utf16Data(), length): QHashedString::compare(string.constData(), cStrData(), length)); } inline bool equals(const QHashedCStringRef &string) const { return length == string.length() && hash == string.hash() && (isQString()?QHashedString::compare((QChar *)utf16Data(), string.constData(), length): QHashedString::compare(string.constData(), cStrData(), length)); } }; class QStringHashData { public: QStringHashData() : buckets(0), numBuckets(0), size(0), numBits(0) {} QStringHashNode **buckets; int numBuckets; int size; short numBits; struct IteratorData { IteratorData() : n(0), p(0) {} QStringHashNode *n; void *p; }; void rehashToBits(short); void rehashToSize(int); void rehashNode(QStringHashNode **newBuckets, int nb, QStringHashNode *node); private: QStringHashData(const QStringHashData &); QStringHashData &operator=(const QStringHashData &); }; template struct HashedForm {}; template<> struct HashedForm { typedef QHashedString Type; }; template<> struct HashedForm { typedef QHashedStringRef Type; }; template<> struct HashedForm { typedef const QHashedString &Type; }; template<> struct HashedForm { typedef const QV4::String *Type; }; template<> struct HashedForm { typedef const QV4::String *Type; }; template<> struct HashedForm { typedef const QHashedStringRef &Type; }; template<> struct HashedForm { typedef QHashedCStringRef Type; }; template<> struct HashedForm { typedef const QHashedCStringRef &Type; }; class QStringHashBase { public: static HashedForm::Type hashedString(const QString &s) { return QHashedString(s);} static HashedForm::Type hashedString(const QStringRef &s) { return QHashedStringRef(s.constData(), s.size());} static HashedForm::Type hashedString(const QHashedString &s) { return s; } static HashedForm::Type hashedString(QV4::String *s) { return s; } static HashedForm::Type hashedString(const QV4::String *s) { return s; } static HashedForm::Type hashedString(const QHashedStringRef &s) { return s; } static HashedForm::Type hashedString(const QLatin1String &s) { return QHashedCStringRef(s.data(), s.size()); } static HashedForm::Type hashedString(const QHashedCStringRef &s) { return s; } static const QString &toQString(const QString &s) { return s; } static const QString &toQString(const QHashedString &s) { return s; } static QString toQString(const QV4::String *s) { return s->toQString(); } static QString toQString(const QHashedStringRef &s) { return s.toString(); } static QString toQString(const QLatin1String &s) { return QString(s); } static QString toQString(const QHashedCStringRef &s) { return s.toUtf16(); } static inline quint32 hashOf(const QHashedStringRef &s) { return s.hash(); } static inline quint32 hashOf(QV4::String *s) { return s->hashValue(); } static inline quint32 hashOf(const QV4::String *s) { return s->hashValue(); } template static inline quint32 hashOf(const K &key) { return hashedString(key).hash(); } }; template class QStringHash : public QStringHashBase { public: typedef QHashedString key_type; typedef T mapped_type; struct Node : public QStringHashNode { Node(const QHashedString &key, const T &value) : QStringHashNode(key), value(value) {} Node(const QHashedCStringRef &key, const T &value) : QStringHashNode(key), value(value) {} Node(const Node &o) : QStringHashNode(o), value(o.value) {} Node() {} T value; }; struct NewedNode : public Node { NewedNode(const QHashedString &key, const T &value) : Node(key, value), nextNewed(0) {} NewedNode(const QHashedCStringRef &key, const T &value) : Node(key, value), nextNewed(0) {} NewedNode(const Node &o) : Node(o), nextNewed(0) {} NewedNode *nextNewed; }; struct ReservedNodePool { ReservedNodePool() : count(0), used(0), nodes(0) {} ~ReservedNodePool() { delete [] nodes; } int count; int used; Node *nodes; }; QStringHashData data; NewedNode *newedNodes; ReservedNodePool *nodePool; const QStringHash *link; template inline Node *findNode(const K &) const; inline Node *createNode(const Node &o); template inline Node *createNode(const K &, const T &); inline Node *insertNode(Node *, quint32); inline void initializeNode(Node *, const QHashedString &key); inline void initializeNode(Node *, const QHashedCStringRef &key); template inline Node *takeNode(const K &key, const T &value); inline Node *takeNode(const Node &o); inline void copy(const QStringHash &); void copyNode(const QStringHashNode *otherNode); inline QStringHashData::IteratorData iterateFirst() const; static inline QStringHashData::IteratorData iterateNext(const QStringHashData::IteratorData &); public: inline QStringHash(); inline QStringHash(const QStringHash &); inline ~QStringHash(); QStringHash &operator=(const QStringHash &); void copyAndReserve(const QStringHash &other, int additionalReserve); void linkAndReserve(const QStringHash &other, int additionalReserve); inline bool isEmpty() const; inline void clear(); inline int count() const; inline int numBuckets() const; inline bool isLinked() const; class ConstIterator { public: inline ConstIterator(); inline ConstIterator(const QStringHashData::IteratorData &); inline ConstIterator &operator++(); inline bool operator==(const ConstIterator &o) const; inline bool operator!=(const ConstIterator &o) const; template inline bool equals(const K &) const; inline QHashedString key() const; inline const T &value() const; inline const T &operator*() const; inline Node *node() const; private: QStringHashData::IteratorData d; }; template inline void insert(const K &, const T &); inline void insert(const ConstIterator &); template inline T *value(const K &) const; inline T *value(const QV4::String *string) const; inline T *value(const ConstIterator &) const; template inline bool contains(const K &) const; template inline T &operator[](const K &); inline ConstIterator begin() const; inline ConstIterator end() const; inline ConstIterator iterator(Node *n) const; template inline ConstIterator find(const K &) const; inline void reserve(int); }; template QStringHash::QStringHash() : newedNodes(0), nodePool(0), link(0) { } template QStringHash::QStringHash(const QStringHash &other) : newedNodes(0), nodePool(0), link(0) { data.numBits = other.data.numBits; data.size = other.data.size; reserve(other.count()); copy(other); } template QStringHash &QStringHash::operator=(const QStringHash &other) { if (&other == this) return *this; clear(); data.numBits = other.data.numBits; data.size = other.data.size; reserve(other.count()); copy(other); return *this; } template void QStringHash::copyAndReserve(const QStringHash &other, int additionalReserve) { clear(); data.numBits = other.data.numBits; reserve(other.count() + additionalReserve); copy(other); } template void QStringHash::linkAndReserve(const QStringHash &other, int additionalReserve) { clear(); if (other.count()) { data.size = other.data.size; data.rehashToSize(other.count() + additionalReserve); if (data.numBuckets == other.data.numBuckets) { nodePool = new ReservedNodePool; nodePool->count = additionalReserve; nodePool->used = 0; nodePool->nodes = new Node[additionalReserve]; for (int ii = 0; ii < data.numBuckets; ++ii) data.buckets[ii] = (Node *)other.data.buckets[ii]; link = &other; return; } data.size = 0; } data.numBits = other.data.numBits; reserve(other.count() + additionalReserve); copy(other); } template QStringHash::~QStringHash() { clear(); } template void QStringHash::clear() { # 569 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h" NewedNode *n = newedNodes; while (n) { NewedNode *c = n; n = c->nextNewed; delete c; } if (nodePool) delete nodePool; delete [] data.buckets; data.buckets = 0; data.numBuckets = 0; data.numBits = 0; data.size = 0; newedNodes = 0; nodePool = 0; link = 0; } template bool QStringHash::isEmpty() const { return data.size== 0; } template int QStringHash::count() const { return data.size; } template int QStringHash::numBuckets() const { return data.numBuckets; } template bool QStringHash::isLinked() const { return link != 0; } template void QStringHash::initializeNode(Node *node, const QHashedString &key) { node->length = key.length(); node->hash = key.hash(); node->strData = const_cast(key).data_ptr(); node->strData->ref.ref(); node->setQString(true); } template void QStringHash::initializeNode(Node *node, const QHashedCStringRef &key) { node->length = key.length(); node->hash = key.hash(); node->ckey = key.constData(); } template template typename QStringHash::Node *QStringHash::takeNode(const K &key, const T &value) { if (nodePool && nodePool->used != nodePool->count) { Node *rv = nodePool->nodes + nodePool->used++; initializeNode(rv, hashedString(key)); rv->value = value; return rv; } else { NewedNode *rv = new NewedNode(hashedString(key), value); rv->nextNewed = newedNodes; newedNodes = rv; return rv; } } template typename QStringHash::Node *QStringHash::takeNode(const Node &o) { if (nodePool && nodePool->used != nodePool->count) { Node *rv = nodePool->nodes + nodePool->used++; rv->length = o.length; rv->hash = o.hash; if (o.isQString()) { rv->strData = o.strData; rv->strData->ref.ref(); rv->setQString(true); } else { rv->ckey = o.ckey; } rv->symbolId = o.symbolId; rv->value = o.value; return rv; } else { NewedNode *rv = new NewedNode(o); rv->nextNewed = newedNodes; newedNodes = rv; return rv; } } template void QStringHash::copyNode(const QStringHashNode *otherNode) { QStringHashNode *next = otherNode->next.data(); if (next) copyNode(next); Node *mynode = takeNode(*(const Node *)otherNode); int bucket = mynode->hash % data.numBuckets; mynode->next = data.buckets[bucket]; data.buckets[bucket] = mynode; } template void QStringHash::copy(const QStringHash &other) { ((!(data . size == 0)) ? qt_assert("data.size == 0","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h",692) : qt_noop()); data.size = other.data.size; data.rehashToBits(data.numBits); for (int i = 0; i < other.data.numBuckets; ++i) { QStringHashNode *bucket = other.data.buckets[i]; if (bucket) copyNode(bucket); } } template QStringHashData::IteratorData QStringHash::iterateNext(const QStringHashData::IteratorData &d) { QStringHash *This = (QStringHash *)d.p; Node *node = (Node *)d.n; if (This->nodePool && node >= This->nodePool->nodes && node < (This->nodePool->nodes + This->nodePool->used)) { node--; if (node < This->nodePool->nodes) node = 0; } else { NewedNode *nn = (NewedNode *)node; node = nn->nextNewed; if (node == 0 && This->nodePool && This->nodePool->used) node = This->nodePool->nodes + This->nodePool->used - 1; } if (node == 0 && This->link) return This->link->iterateFirst(); QStringHashData::IteratorData rv; rv.n = node; rv.p = d.p; return rv; } template QStringHashData::IteratorData QStringHash::iterateFirst() const { Node *n = 0; if (newedNodes) n = newedNodes; else if (nodePool && nodePool->used) n = nodePool->nodes + nodePool->used - 1; if (n == 0 && link) return link->iterateFirst(); QStringHashData::IteratorData rv; rv.n = n; rv.p = const_cast *>(this); return rv; } template typename QStringHash::ConstIterator QStringHash::iterator(Node *n) const { if (!n) return ConstIterator(); const QStringHash *container = this; if (link) { if ((n >= nodePool->nodes) && (n < (nodePool->nodes + nodePool->used))) { } else if ((n >= link->nodePool->nodes) && (n < (link->nodePool->nodes + link->nodePool->used))) { container = link; } else { const NewedNode *ln = link->newedNodes; while (ln) { if (ln == n) { container = link; break; } ln = ln->nextNewed; } } } QStringHashData::IteratorData rv; rv.n = n; rv.p = const_cast *>(container); return ConstIterator(rv); } template typename QStringHash::Node *QStringHash::createNode(const Node &o) { Node *n = takeNode(o); return insertNode(n, n->hash); } template template typename QStringHash::Node *QStringHash::createNode(const K &key, const T &value) { Node *n = takeNode(key, value); return insertNode(n, hashOf(key)); } template typename QStringHash::Node *QStringHash::insertNode(Node *n, quint32 hash) { if (data.size >= data.numBuckets) data.rehashToBits(data.numBits + 1); int bucket = hash % data.numBuckets; n->next = data.buckets[bucket]; data.buckets[bucket] = n; data.size++; return n; } template template void QStringHash::insert(const K &key, const T &value) { Node *n = link?0:findNode(key); if (n) n->value = value; else createNode(key, value); } template void QStringHash::insert(const ConstIterator &iter) { insert(iter.key(), iter.value()); } template template typename QStringHash::Node *QStringHash::findNode(const K &key) const { QStringHashNode *node = data.numBuckets?data.buckets[hashOf(key) % data.numBuckets]:0; typename HashedForm::Type hashedKey(hashedString(key)); while (node && !node->equals(hashedKey)) node = (*node->next); return (Node *)node; } template template T *QStringHash::value(const K &key) const { Node *n = findNode(key); return n?&n->value:0; } template T *QStringHash::value(const ConstIterator &iter) const { Node *n = iter.node(); return value(n->key()); } template T *QStringHash::value(const QV4::String *string) const { Node *n = findNode(string); return n?&n->value:0; } template template bool QStringHash::contains(const K &key) const { return 0 != value(key); } template template T &QStringHash::operator[](const K &key) { Node *n = findNode(key); if (n) return n->value; else return createNode(key, T())->value; } template void QStringHash::reserve(int n) { if (nodePool || 0 == n) return; nodePool = new ReservedNodePool; nodePool->count = n; nodePool->used = 0; nodePool->nodes = new Node[n]; data.rehashToSize(n); } template QStringHash::ConstIterator::ConstIterator() { } template QStringHash::ConstIterator::ConstIterator(const QStringHashData::IteratorData &d) : d(d) { } template typename QStringHash::ConstIterator &QStringHash::ConstIterator::operator++() { d = QStringHash::iterateNext(d); return *this; } template bool QStringHash::ConstIterator::operator==(const ConstIterator &o) const { return d.n == o.d.n; } template bool QStringHash::ConstIterator::operator!=(const ConstIterator &o) const { return d.n != o.d.n; } template template bool QStringHash::ConstIterator::equals(const K &key) const { return d.n->equals(key); } template QHashedString QStringHash::ConstIterator::key() const { Node *n = (Node *)d.n; return n->key(); } template const T &QStringHash::ConstIterator::value() const { Node *n = (Node *)d.n; return n->value; } template const T &QStringHash::ConstIterator::operator*() const { Node *n = (Node *)d.n; return n->value; } template typename QStringHash::Node *QStringHash::ConstIterator::node() const { Node *n = (Node *)d.n; return n; } template typename QStringHash::ConstIterator QStringHash::begin() const { return ConstIterator(iterateFirst()); } template typename QStringHash::ConstIterator QStringHash::end() const { return ConstIterator(); } template template typename QStringHash::ConstIterator QStringHash::find(const K &key) const { return iterator(findNode(key)); } template class QStringMultiHash : public QStringHash { public: typedef typename QStringHash::ConstIterator ConstIterator; template inline void insert(const K &, const T &); inline void insert(const ConstIterator &); inline ConstIterator findNext(const ConstIterator &) const; }; template template void QStringMultiHash::insert(const K &key, const T &value) { QStringHash::createNode(key, value); } template void QStringMultiHash::insert(const ConstIterator &iter) { QStringHash::createNode(iter.key(), iter.value()); } template typename QStringHash::ConstIterator QStringMultiHash::findNext(const ConstIterator &iter) const { QStringHashNode *node = iter.node(); if (node) { QHashedString key(node->key()); while ((node = *node->next)) { if (node->equals(key)) { return QStringHash::iterator(static_cast::Node *>(node)); } } } return ConstIterator(); } inline uint qHash(const QHashedString &string) { return uint(string.hash()); } inline uint qHash(const QHashedStringRef &string) { return uint(string.hash()); } QHashedString::QHashedString() : QString(), m_hash(0) { } QHashedString::QHashedString(const QString &string) : QString(string), m_hash(0) { } QHashedString::QHashedString(const QString &string, quint32 hash) : QString(string), m_hash(hash) { } QHashedString::QHashedString(const QHashedString &string) : QString(string), m_hash(string.m_hash) { } QHashedString &QHashedString::operator=(const QHashedString &string) { static_cast(*this) = string; m_hash = string.m_hash; return *this; } bool QHashedString::operator==(const QHashedString &string) const { return (string.m_hash == m_hash || !string.m_hash || !m_hash) && static_cast(*this) == static_cast(string); } bool QHashedString::operator==(const QHashedStringRef &string) const { return length() == string.m_length && (string.m_hash == m_hash || !string.m_hash || !m_hash) && QHashedString::compare(constData(), string.m_data, string.m_length); } quint32 QHashedString::hash() const { if (!m_hash) computeHash(); return m_hash; } quint32 QHashedString::existingHash() const { return m_hash; } QHashedStringRef::QHashedStringRef() : m_data(0), m_length(0), m_hash(0) { } QHashedStringRef::QHashedStringRef(const QString &str) : m_data(str.constData()), m_length(str.length()), m_hash(0) { } QHashedStringRef::QHashedStringRef(const QStringRef &str) : m_data(str.constData()), m_length(str.length()), m_hash(0) { } QHashedStringRef::QHashedStringRef(const QChar *data, int length) : m_data(data), m_length(length), m_hash(0) { } QHashedStringRef::QHashedStringRef(const QChar *data, int length, quint32 hash) : m_data(data), m_length(length), m_hash(hash) { } QHashedStringRef::QHashedStringRef(const QHashedString &string) : m_data(string.constData()), m_length(string.length()), m_hash(string.m_hash) { } QHashedStringRef::QHashedStringRef(const QHashedStringRef &string) : m_data(string.m_data), m_length(string.m_length), m_hash(string.m_hash) { } QHashedStringRef &QHashedStringRef::operator=(const QHashedStringRef &o) { m_data = o.m_data; m_length = o.m_length; m_hash = o.m_hash; return *this; } bool QHashedStringRef::operator==(const QString &string) const { return m_length == string.length() && QHashedString::compare(string.constData(), m_data, m_length); } bool QHashedStringRef::operator==(const QHashedString &string) const { return m_length == string.length() && (m_hash == string.m_hash || !m_hash || !string.m_hash) && QHashedString::compare(string.constData(), m_data, m_length); } bool QHashedStringRef::operator==(const QHashedStringRef &string) const { return m_length == string.m_length && (m_hash == string.m_hash || !m_hash || !string.m_hash) && QHashedString::compare(string.m_data, m_data, m_length); } bool QHashedStringRef::operator==(const QHashedCStringRef &string) const { return m_length == string.m_length && (m_hash == string.m_hash || !m_hash || !string.m_hash) && QHashedString::compare(m_data, string.m_data, m_length); } bool QHashedStringRef::operator!=(const QString &string) const { return m_length != string.length() || !QHashedString::compare(string.constData(), m_data, m_length); } bool QHashedStringRef::operator!=(const QHashedString &string) const { return m_length != string.length() || (m_hash != string.m_hash && m_hash && string.m_hash) || !QHashedString::compare(string.constData(), m_data, m_length); } bool QHashedStringRef::operator!=(const QHashedStringRef &string) const { return m_length != string.m_length || (m_hash != string.m_hash && m_hash && string.m_hash) || QHashedString::compare(string.m_data, m_data, m_length); } bool QHashedStringRef::operator!=(const QHashedCStringRef &string) const { return m_length != string.m_length || (m_hash != string.m_hash && m_hash && string.m_hash) || QHashedString::compare(m_data, string.m_data, m_length); } QChar *QHashedStringRef::data() { return const_cast(m_data); } const QChar &QHashedStringRef::at(int index) const { ((!(index < m_length)) ? qt_assert("index < m_length","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h",1194) : qt_noop()); return m_data[index]; } const QChar *QHashedStringRef::constData() const { return m_data; } bool QHashedStringRef::isEmpty() const { return m_length == 0; } int QHashedStringRef::length() const { return m_length; } bool QHashedStringRef::isLatin1() const { for (int ii = 0; ii < m_length; ++ii) if (m_data[ii].unicode() > 127) return false; return true; } bool QHashedStringRef::startsWithUpper() const { if (m_length < 1) return false; return m_data[0].isUpper(); } quint32 QHashedStringRef::hash() const { if (!m_hash) computeHash(); return m_hash; } QHashedCStringRef::QHashedCStringRef() : m_data(0), m_length(0), m_hash(0) { } QHashedCStringRef::QHashedCStringRef(const char *data, int length) : m_data(data), m_length(length), m_hash(0) { } QHashedCStringRef::QHashedCStringRef(const char *data, int length, quint32 hash) : m_data(data), m_length(length), m_hash(hash) { } QHashedCStringRef::QHashedCStringRef(const QHashedCStringRef &o) : m_data(o.m_data), m_length(o.m_length), m_hash(o.m_hash) { } quint32 QHashedCStringRef::hash() const { if (!m_hash) computeHash(); return m_hash; } const char *QHashedCStringRef::constData() const { return m_data; } int QHashedCStringRef::length() const { return m_length; } int QHashedCStringRef::utf16length() const { return m_length; } void QHashedCStringRef::writeUtf16(QChar *output) const { writeUtf16((quint16 *)output); } void QHashedCStringRef::writeUtf16(quint16 *output) const { int l = m_length; const char *d = m_data; while (l--) *output++ = *d++; } bool QHashedString::compare(const QChar *lhs, const char *rhs, int length) { ((!(lhs && rhs)) ? qt_assert("lhs && rhs","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h",1288) : qt_noop()); const quint16 *l = (const quint16*)lhs; while (length--) if (*l++ != *rhs++) return false; return true; } bool QHashedString::compare(const char *lhs, const char *rhs, int length) { ((!(lhs && rhs)) ? qt_assert("lhs && rhs","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/ftw/qhashedstring_p.h",1297) : qt_noop()); return 0 == ::memcmp(lhs, rhs, length); } # 2 "../../include/QtQml/5.2.0/QtQml/private/qhashedstring_p.h" 2 # 62 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvarlengtharray.h" 1 # 63 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qvector.h" 1 # 64 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4value_p.h" 1 # 66 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/qqmlpropertycache_p.h" 2 class QV8Engine; class QMetaProperty; class QQmlEngine; class QQmlPropertyData; class QQmlAccessors; class QMetaObjectBuilder; class QQmlPropertyCacheMethodArguments; class QQmlVMEMetaObject; class QQmlPropertyCacheCreator; class QQmlPropertyRawData { public: enum Flag { NoFlags = 0x00000000, ValueTypeFlagMask = 0x0000FFFF, IsConstant = 0x00000001, IsWritable = 0x00000002, IsResettable = 0x00000004, IsAlias = 0x00000008, IsFinal = 0x00000010, IsOverridden = 0x00000020, IsDirect = 0x00000040, HasAccessors = 0x00000080, IsFunction = 0x00000100, IsQObjectDerived = 0x00000200, IsEnumType = 0x00000400, IsQList = 0x00000800, IsQmlBinding = 0x00001000, IsQJSValue = 0x00002000, IsV4Handle = 0x00004000, IsVarProperty = 0x00008000, IsValueTypeVirtual = 0x00010000, IsQVariant = 0x00020000, IsVMEFunction = 0x00040000, HasArguments = 0x00080000, IsSignal = 0x00100000, IsVMESignal = 0x00200000, IsV4Function = 0x00400000, IsSignalHandler = 0x00800000, IsOverload = 0x01000000, IsCloned = 0x02000000, NotFullyResolved = 0x04000000, PropTypeFlagMask = IsQObjectDerived | IsEnumType | IsQList | IsQmlBinding | IsQJSValue | IsV4Handle | IsQVariant, }; typedef QFlags Flags; Flags getFlags() const { return Flag(flags); } void setFlags(Flags f) { flags = f; } bool isValid() const { return coreIndex != -1; } bool isConstant() const { return flags & IsConstant; } bool isWritable() const { return flags & IsWritable; } bool isResettable() const { return flags & IsResettable; } bool isAlias() const { return flags & IsAlias; } bool isFinal() const { return flags & IsFinal; } bool isOverridden() const { return flags & IsOverridden; } bool isDirect() const { return flags & IsDirect; } bool hasAccessors() const { return flags & HasAccessors; } bool isFunction() const { return flags & IsFunction; } bool isQObject() const { return flags & IsQObjectDerived; } bool isEnum() const { return flags & IsEnumType; } bool isQList() const { return flags & IsQList; } bool isQmlBinding() const { return flags & IsQmlBinding; } bool isQJSValue() const { return flags & IsQJSValue; } bool isV4Handle() const { return flags & IsV4Handle; } bool isVarProperty() const { return flags & IsVarProperty; } bool isValueTypeVirtual() const { return flags & IsValueTypeVirtual; } bool isQVariant() const { return flags & IsQVariant; } bool isVMEFunction() const { return flags & IsVMEFunction; } bool hasArguments() const { return flags & HasArguments; } bool isSignal() const { return flags & IsSignal; } bool isVMESignal() const { return flags & IsVMESignal; } bool isV4Function() const { return flags & IsV4Function; } bool isSignalHandler() const { return flags & IsSignalHandler; } bool isOverload() const { return flags & IsOverload; } bool isCloned() const { return flags & IsCloned; } bool hasOverride() const { return !(flags & IsValueTypeVirtual) && !(flags & HasAccessors) && overrideIndex >= 0; } bool hasRevision() const { return !(flags & HasAccessors) && revision != 0; } inline int getValueTypeCoreIndex() const; inline int encodedIndex() const; union { int propType; const char *propTypeName; }; int coreIndex; union { int notifyIndex; void *arguments; }; union { struct { qint16 revision; qint16 metaObjectOffset; union { struct { quint16 valueTypeFlags; quint16 valueTypePropType; quint16 valueTypeCoreIndex; }; struct { uint overrideIndexIsProperty : 1; signed int overrideIndex : 31; }; }; }; struct { QQmlAccessors *accessors; qintptr accessorData; }; }; private: friend class QQmlPropertyData; friend class QQmlPropertyCache; quint32 flags; }; constexpr inline QFlags operator|(QQmlPropertyRawData::Flags::enum_type f1, QQmlPropertyRawData::Flags::enum_type f2) { return QFlags(f1) | f2; } constexpr inline QFlags operator|(QQmlPropertyRawData::Flags::enum_type f1, QFlags f2) { return f2 | f1; } constexpr inline QIncompatibleFlag operator|(QQmlPropertyRawData::Flags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } class QQmlPropertyData : public QQmlPropertyRawData { public: inline QQmlPropertyData(); inline QQmlPropertyData(const QQmlPropertyRawData &); inline bool operator==(const QQmlPropertyRawData &); static Flags flagsForProperty(const QMetaProperty &, QQmlEngine *engine = 0); void load(const QMetaProperty &, QQmlEngine *engine = 0); void load(const QMetaMethod &); QString name(QObject *); QString name(const QMetaObject *); void markAsOverrideOf(QQmlPropertyData *predecessor); private: friend class QQmlPropertyCache; void lazyLoad(const QMetaProperty &, QQmlEngine *engine = 0); void lazyLoad(const QMetaMethod &); bool notFullyResolved() const { return flags & NotFullyResolved; } }; class QQmlPropertyCacheMethodArguments; class __attribute__((visibility("default"))) QQmlPropertyCache : public QQmlRefCount, public QQmlCleanup { public: QQmlPropertyCache(QQmlEngine *); QQmlPropertyCache(QQmlEngine *, const QMetaObject *); virtual ~QQmlPropertyCache(); void update(QQmlEngine *, const QMetaObject *); void invalidate(QQmlEngine *, const QMetaObject *); QQmlPropertyCache *copy(); QQmlPropertyCache *copyAndAppend(QQmlEngine *, const QMetaObject *, QQmlPropertyData::Flag propertyFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag methodFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag signalFlags = QQmlPropertyData::NoFlags); QQmlPropertyCache *copyAndAppend(QQmlEngine *, const QMetaObject *, int revision, QQmlPropertyData::Flag propertyFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag methodFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag signalFlags = QQmlPropertyData::NoFlags); QQmlPropertyCache *copyAndReserve(QQmlEngine *, int propertyCount, int methodCount, int signalCount); void appendProperty(const QString &, quint32 flags, int coreIndex, int propType, int notifyIndex); void appendProperty(const QHashedCStringRef &, quint32 flags, int coreIndex, int propType, int notifyIndex); void appendSignal(const QString &, quint32, int coreIndex, const int *types = 0, const QList &names = QList()); void appendSignal(const QHashedCStringRef &, quint32, int coreIndex, const int *types = 0, const QList &names = QList()); void appendMethod(const QString &, quint32 flags, int coreIndex, const QList &names = QList()); void appendMethod(const QHashedCStringRef &, quint32 flags, int coreIndex, const QList &names = QList()); const QMetaObject *metaObject() const; const QMetaObject *createMetaObject(); const QMetaObject *firstCppMetaObject() const; template QQmlPropertyData *property(const K &key, QObject *object, QQmlContextData *context) const { return findProperty(stringCache.find(key), object, context); } QQmlPropertyData *property(int) const; QQmlPropertyData *method(int) const; QQmlPropertyData *signal(int index) const { return signal(index, 0); } int methodIndexToSignalIndex(int) const; QStringList propertyNames() const; QString defaultPropertyName() const; QQmlPropertyData *defaultProperty() const; QQmlPropertyCache *parent() const; void setParent(QQmlPropertyCache *newParent); inline QQmlPropertyData *overrideData(QQmlPropertyData *) const; inline bool isAllowedInRevision(QQmlPropertyData *) const; inline QQmlEngine *qmlEngine() const; static QQmlPropertyData *property(QQmlEngine *, QObject *, const QString &, QQmlContextData *, QQmlPropertyData &); static QQmlPropertyData *property(QQmlEngine *, QObject *, const QV4::String *, QQmlContextData *, QQmlPropertyData &); static int *methodParameterTypes(QObject *, int index, QVarLengthArray &dummy, QByteArray *unknownTypeError); static int methodReturnType(QObject *, const QQmlPropertyData &data, QByteArray *unknownTypeError); int originalClone(int index); static int originalClone(QObject *, int index); QList signalParameterNames(int index) const; QString signalParameterStringForJS(int index, QString *errorString = 0); static QString signalParameterStringForJS(QQmlEngine *engine, const QList ¶meterNameList, QString *errorString = 0); const char *className() const; inline int propertyCount() const; inline int propertyOffset() const; inline int methodCount() const; inline int methodOffset() const; inline int signalCount() const; inline int signalOffset() const; static bool isDynamicMetaObject(const QMetaObject *); void toMetaObjectBuilder(QMetaObjectBuilder &); protected: virtual void destroy(); virtual void clear(); private: friend class QQmlEnginePrivate; friend class QQmlCompiler; friend class QQmlPropertyCacheCreator; friend class QQmlComponentAndAliasResolver; inline QQmlPropertyCache *copy(int reserve); void append(QQmlEngine *, const QMetaObject *, int revision, QQmlPropertyData::Flag propertyFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag methodFlags = QQmlPropertyData::NoFlags, QQmlPropertyData::Flag signalFlags = QQmlPropertyData::NoFlags); QQmlPropertyCacheMethodArguments *createArgumentsObject(int count, const QList &names = QList()); QQmlPropertyData *signal(int, QQmlPropertyCache **) const; typedef QVector IndexCache; typedef QStringMultiHash > StringCache; typedef QVector AllowedRevisionCache; QQmlPropertyData *findProperty(StringCache::ConstIterator it, QObject *, QQmlContextData *) const; QQmlPropertyData *findProperty(StringCache::ConstIterator it, const QQmlVMEMetaObject *, QQmlContextData *) const; QQmlPropertyData *ensureResolved(QQmlPropertyData*) const; void resolve(QQmlPropertyData *) const; void updateRecur(QQmlEngine *, const QMetaObject *); template QQmlPropertyData *findNamedProperty(const K &key) { StringCache::mapped_type *it = stringCache.value(key); return it ? it->second : 0; } template void setNamedProperty(const K &key, int index, QQmlPropertyData *data, bool isOverride) { stringCache.insert(key, qMakePair(index, data)); _hasPropertyOverrides |= isOverride; } QQmlEngine *engine; QQmlPropertyCache *_parent; int propertyIndexCacheStart; int methodIndexCacheStart; int signalHandlerIndexCacheStart; IndexCache propertyIndexCache; IndexCache methodIndexCache; IndexCache signalHandlerIndexCache; StringCache stringCache; AllowedRevisionCache allowedRevisionCache; bool _hasPropertyOverrides : 1; bool _ownMetaObject : 1; const QMetaObject *_metaObject; QByteArray _dynamicClassName; QByteArray _dynamicStringData; QString _defaultPropertyName; QQmlPropertyCacheMethodArguments *argumentsCache; }; class QQmlEnginePrivate; class __attribute__((visibility("default"))) QQmlMetaObject { public: inline QQmlMetaObject(); inline QQmlMetaObject(QObject *); inline QQmlMetaObject(const QMetaObject *); inline QQmlMetaObject(QQmlPropertyCache *); inline QQmlMetaObject(const QQmlMetaObject &); inline QQmlMetaObject &operator=(const QQmlMetaObject &); inline bool isNull() const; inline const char *className() const; inline int propertyCount() const; inline bool hasMetaObject() const; inline const QMetaObject *metaObject() const; QQmlPropertyCache *propertyCache(QQmlEnginePrivate *) const; static bool canConvert(const QQmlMetaObject &from, const QQmlMetaObject &to); private: QBiPointer _m; }; QQmlPropertyData::QQmlPropertyData() { propType = 0; coreIndex = -1; notifyIndex = -1; overrideIndexIsProperty = false; overrideIndex = -1; revision = 0; metaObjectOffset = -1; flags = 0; } QQmlPropertyData::QQmlPropertyData(const QQmlPropertyRawData &d) { *(static_cast(this)) = d; } bool QQmlPropertyData::operator==(const QQmlPropertyRawData &other) { return flags == other.flags && propType == other.propType && coreIndex == other.coreIndex && notifyIndex == other.notifyIndex && revision == other.revision && (!isValueTypeVirtual() || (valueTypeCoreIndex == other.valueTypeCoreIndex && valueTypePropType == other.valueTypePropType)); } int QQmlPropertyRawData::getValueTypeCoreIndex() const { return isValueTypeVirtual()?valueTypeCoreIndex:-1; } int QQmlPropertyRawData::encodedIndex() const { return isValueTypeVirtual()?(coreIndex | (valueTypeCoreIndex << 16)):coreIndex; } QQmlPropertyData * QQmlPropertyCache::overrideData(QQmlPropertyData *data) const { if (!data->hasOverride()) return 0; if (data->overrideIndexIsProperty) return property(data->overrideIndex); else return method(data->overrideIndex); } bool QQmlPropertyCache::isAllowedInRevision(QQmlPropertyData *data) const { return (data->hasAccessors() || (data->metaObjectOffset == -1 && data->revision == 0)) || (allowedRevisionCache[data->metaObjectOffset] >= data->revision); } QQmlEngine *QQmlPropertyCache::qmlEngine() const { return engine; } int QQmlPropertyCache::propertyCount() const { return propertyIndexCacheStart + propertyIndexCache.count(); } int QQmlPropertyCache::propertyOffset() const { return propertyIndexCacheStart; } int QQmlPropertyCache::methodCount() const { return methodIndexCacheStart + methodIndexCache.count(); } int QQmlPropertyCache::methodOffset() const { return methodIndexCacheStart; } int QQmlPropertyCache::signalCount() const { return signalHandlerIndexCacheStart + signalHandlerIndexCache.count(); } int QQmlPropertyCache::signalOffset() const { return signalHandlerIndexCacheStart; } QQmlMetaObject::QQmlMetaObject() { } QQmlMetaObject::QQmlMetaObject(QObject *o) { if (o) { QQmlData *ddata = QQmlData::get(o, false); if (ddata && ddata->propertyCache) _m = ddata->propertyCache; else _m = o->metaObject(); } } QQmlMetaObject::QQmlMetaObject(const QMetaObject *m) : _m(m) { } QQmlMetaObject::QQmlMetaObject(QQmlPropertyCache *m) : _m(m) { } QQmlMetaObject::QQmlMetaObject(const QQmlMetaObject &o) : _m(o._m) { } QQmlMetaObject &QQmlMetaObject::operator=(const QQmlMetaObject &o) { _m = o._m; return *this; } bool QQmlMetaObject::isNull() const { return _m.isNull(); } const char *QQmlMetaObject::className() const { if (_m.isNull()) { return 0; } else if (_m.isT1()) { return _m.asT1()->className(); } else { return _m.asT2()->className(); } } int QQmlMetaObject::propertyCount() const { if (_m.isNull()) { return 0; } else if (_m.isT1()) { return _m.asT1()->propertyCount(); } else { return _m.asT2()->propertyCount(); } } bool QQmlMetaObject::hasMetaObject() const { return _m.isT2() || (!_m.isNull() && _m.asT1()->metaObject()); } const QMetaObject *QQmlMetaObject::metaObject() const { if (_m.isNull()) return 0; if (_m.isT1()) return _m.asT1()->createMetaObject(); else return _m.asT2(); } # 2 "../../include/QtQml/5.2.0/QtQml/private/qqmlpropertycache_p.h" 2 # 69 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4qobjectwrapper_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qpair.h" 1 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 60 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qhashedstring_p.h" 1 # 61 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmldata_p.h" 1 # 62 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qqmlpropertycache_p.h" 1 # 63 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qintrusivelist_p.h" 1 # 64 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4value_p.h" 1 # 66 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4functionobject_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4math_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qglobal.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4math_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnumeric.h" 1 # 48 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4math_p.h" 2 # 1 "/usr/include/c++/4.8/cmath" 1 3 # 40 "/usr/include/c++/4.8/cmath" 3 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 1 3 # 45 "/usr/include/c++/4.8/cmath" 2 3 # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4math_p.h" 2 namespace QV4 { static inline __attribute((const)) Value add_int32(int a, int b) { quint8 overflow = 0; int aa = a; asm ("addl %2, %1\n" "seto %0" : "=q" (overflow), "=r" (aa) : "r" (b), "1" (aa) : "cc" ); if (!overflow) return Primitive::fromInt32(aa); return Primitive::fromDouble((double)a + (double)b); } static inline __attribute((const)) Value sub_int32(int a, int b) { quint8 overflow = 0; int aa = a; asm ("subl %2, %1\n" "seto %0" : "=q" (overflow), "=r" (aa) : "r" (b), "1" (aa) : "cc" ); if (!overflow) return Primitive::fromInt32(aa); return Primitive::fromDouble((double)a - (double)b); } static inline __attribute((const)) Value mul_int32(int a, int b) { quint8 overflow = 0; int aa = a; asm ("imul %2, %1\n" "setc %0" : "=q" (overflow), "=r" (aa) : "r" (b), "1" (aa) : "cc" ); if (!overflow) return Primitive::fromInt32(aa); return Primitive::fromDouble((double)a * (double)b); } # 138 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4math_p.h" } # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 50 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qnumeric.h" 1 # 51 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qdebug.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QDebug" 2 # 52 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qurl.h" 1 # 53 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/include/c++/4.8/cmath" 1 3 # 40 "/usr/include/c++/4.8/cmath" 3 3 # 1 "/opt/intel/composer_xe_2013_sp1.1.106/compiler/include/math.h" 1 3 # 45 "/usr/include/c++/4.8/cmath" 2 3 # 55 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 # 1 "/usr/include/c++/4.8/cassert" 1 3 # 42 "/usr/include/c++/4.8/cassert" 3 3 # 1 "/usr/include/assert.h" 1 3 # 33 "/usr/include/assert.h" 3 # 63 "/usr/include/assert.h" 3 extern "C" { extern void __assert_fail (const char *__assertion, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) throw () __attribute__ ((__noreturn__)); } # 96 "/usr/include/assert.h" 3 # 111 "/usr/include/assert.h" 3 # 44 "/usr/include/c++/4.8/cassert" 2 3 # 56 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" 2 namespace QV4 { # 92 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4runtime_p.h" enum TypeHint { PREFERREDTYPE_HINT, NUMBER_HINT, STRING_HINT }; struct Function; struct Object; struct String; struct ExecutionContext; struct FunctionObject; struct BooleanObject; struct NumberObject; struct StringObject; struct DateObject; struct RegExpObject; struct ArrayObject; struct ErrorObject; struct ExecutionEngine; struct InternalClass; struct NoThrowContext : public ExecutionContext { }; QV4::ReturnedValue __qmljs_call_activation_property(QV4::ExecutionContext *, const QV4::StringRef name, CallDataRef callData); QV4::ReturnedValue __qmljs_call_property(QV4::ExecutionContext *context, const QV4::StringRef name, CallDataRef callData); QV4::ReturnedValue __qmljs_call_property_lookup(ExecutionContext *context, uint index, CallDataRef callData); QV4::ReturnedValue __qmljs_call_element(ExecutionContext *context, const ValueRef index, CallDataRef callData); QV4::ReturnedValue __qmljs_call_value(QV4::ExecutionContext *context, const QV4::ValueRef func, CallDataRef callData); QV4::ReturnedValue __qmljs_construct_activation_property(QV4::ExecutionContext *, const QV4::StringRef name, CallDataRef callData); QV4::ReturnedValue __qmljs_construct_property(QV4::ExecutionContext *context, const QV4::ValueRef base, const QV4::StringRef name, CallDataRef callData); QV4::ReturnedValue __qmljs_construct_value(QV4::ExecutionContext *context, const QV4::ValueRef func, CallDataRef callData); QV4::ReturnedValue __qmljs_builtin_typeof(QV4::ExecutionContext *ctx, const QV4::ValueRef val); QV4::ReturnedValue __qmljs_builtin_typeof_name(QV4::ExecutionContext *context, const QV4::StringRef name); QV4::ReturnedValue __qmljs_builtin_typeof_member(QV4::ExecutionContext* context, const QV4::ValueRef base, const QV4::StringRef name); QV4::ReturnedValue __qmljs_builtin_typeof_element(QV4::ExecutionContext* context, const QV4::ValueRef base, const QV4::ValueRef index); void __qmljs_builtin_rethrow(QV4::ExecutionContext *context); QV4::ExecutionContext *__qmljs_builtin_push_with_scope(const QV4::ValueRef o, QV4::ExecutionContext *ctx); QV4::ExecutionContext *__qmljs_builtin_push_catch_scope(QV4::ExecutionContext *ctx, const QV4::StringRef exceptionVarName); QV4::ExecutionContext *__qmljs_builtin_pop_scope(QV4::ExecutionContext *ctx); ReturnedValue __qmljs_builtin_unwind_exception(ExecutionContext *ctx); void __qmljs_builtin_declare_var(QV4::ExecutionContext *ctx, bool deletable, const QV4::StringRef name); void __qmljs_builtin_define_property(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name, QV4::ValueRef val); QV4::ReturnedValue __qmljs_builtin_define_array(QV4::ExecutionContext *ctx, QV4::Value *values, uint length); void __qmljs_builtin_define_getter_setter(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name, const QV4::ValueRef getter, const QV4::ValueRef setter); QV4::ReturnedValue __qmljs_builtin_define_object_literal(QV4::ExecutionContext *ctx, const QV4::Value *args, int classId); QV4::ReturnedValue __qmljs_builtin_setup_arguments_object(ExecutionContext *ctx); void __qmljs_builtin_convert_this_to_object(ExecutionContext *ctx); QV4::ReturnedValue __qmljs_value_from_string(QV4::String *string); QV4::ReturnedValue __qmljs_lookup_runtime_regexp(QV4::ExecutionContext *ctx, int id); QV4::ReturnedValue __qmljs_init_closure(QV4::ExecutionContext *ctx, int functionId); __attribute__((visibility("default"))) double __qmljs_string_to_number(const QString &s); Returned *__qmljs_string_from_number(QV4::ExecutionContext *ctx, double number); __attribute__((visibility("default"))) ReturnedValue __qmljs_object_default_value(QV4::Object *object, int typeHint); void __qmljs_set_activation_property(QV4::ExecutionContext *ctx, const QV4::StringRef name, const QV4::ValueRef value); void __qmljs_set_property(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name, const QV4::ValueRef value); QV4::ReturnedValue __qmljs_get_property(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name); QV4::ReturnedValue __qmljs_get_activation_property(QV4::ExecutionContext *ctx, const QV4::StringRef name); ReturnedValue __qmljs_call_global_lookup(QV4::ExecutionContext *context, uint index, CallDataRef callData); QV4::ReturnedValue __qmljs_construct_global_lookup(QV4::ExecutionContext *context, uint index, CallDataRef callData); QV4::ReturnedValue __qmljs_get_element(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::ValueRef index); void __qmljs_set_element(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::ValueRef index, const QV4::ValueRef value); QV4::ReturnedValue __qmljs_get_id_object(NoThrowContext *ctx, int id); QV4::ReturnedValue __qmljs_get_imported_scripts(NoThrowContext *ctx); QV4::ReturnedValue __qmljs_get_context_object(NoThrowContext *ctx); QV4::ReturnedValue __qmljs_get_scope_object(NoThrowContext *ctx); QV4::ReturnedValue __qmljs_get_qobject_property(ExecutionContext *ctx, const ValueRef object, int propertyIndex, bool captureRequired); void __qmljs_set_qobject_property(ExecutionContext *ctx, const ValueRef object, int propertyIndex, const ValueRef value); QV4::ReturnedValue __qmljs_foreach_iterator_object(QV4::ExecutionContext *ctx, const QV4::ValueRef in); QV4::ReturnedValue __qmljs_foreach_next_property_name(const ValueRef foreach_iterator); QV4::ReturnedValue __qmljs_to_primitive(const ValueRef value, int typeHint); __attribute__((visibility("default"))) QV4::Bool __qmljs_to_boolean(const QV4::ValueRef value); double __qmljs_to_number(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_to_string(QV4::ExecutionContext *ctx, const ValueRef value); __attribute__((visibility("default"))) Returned *__qmljs_convert_to_string(QV4::ExecutionContext *ctx, const ValueRef value); void __qmljs_numberToString(QString *result, double num, int radix = 10); ReturnedValue __qmljs_to_object(QV4::ExecutionContext *ctx, const ValueRef value); Returned *__qmljs_convert_to_object(QV4::ExecutionContext *ctx, const ValueRef value); QV4::Bool __qmljs_equal_helper(const ValueRef x, const ValueRef y); __attribute__((visibility("default"))) QV4::Bool __qmljs_strict_equal(const ValueRef x, const ValueRef y); typedef QV4::ReturnedValue (*UnaryOpName)(const QV4::ValueRef); QV4::ReturnedValue __qmljs_uplus(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_uminus(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_compl(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_not(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_increment(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_decrement(const QV4::ValueRef value); __attribute__((visibility("default"))) ReturnedValue __qmljs_value_to_double(const ValueRef value); __attribute__((visibility("default"))) int __qmljs_value_to_int32(const ValueRef value); __attribute__((visibility("default"))) int __qmljs_double_to_int32(const double &d); __attribute__((visibility("default"))) unsigned __qmljs_value_to_uint32(const ValueRef value); __attribute__((visibility("default"))) unsigned __qmljs_double_to_uint32(const double &d); QV4::ReturnedValue __qmljs_delete_subscript(QV4::ExecutionContext *ctx, const QV4::ValueRef base, const QV4::ValueRef index); ReturnedValue __qmljs_delete_member(QV4::ExecutionContext *ctx, const QV4::ValueRef base, const QV4::StringRef name); ReturnedValue __qmljs_delete_name(QV4::ExecutionContext *ctx, const QV4::StringRef name); void __qmljs_throw(QV4::ExecutionContext*, const QV4::ValueRef value); typedef QV4::ReturnedValue (*BinOp)(const QV4::ValueRef left, const QV4::ValueRef right); typedef QV4::ReturnedValue (*BinOpContext)(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_add(ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_add_string(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_bit_or(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_bit_xor(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_bit_and(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_sub(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_mul(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_div(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_mod(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_shl(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_shr(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_ushr(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_gt(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_lt(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_ge(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_le(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_eq(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_ne(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_se(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_sne(const QV4::ValueRef left, const QV4::ValueRef right); QV4::ReturnedValue __qmljs_add_helper(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); typedef QV4::Bool (*CmpOp)(const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_gt(const QV4::ValueRef l, const QV4::ValueRef r); QV4::Bool __qmljs_cmp_lt(const QV4::ValueRef l, const QV4::ValueRef r); QV4::Bool __qmljs_cmp_ge(const QV4::ValueRef l, const QV4::ValueRef r); QV4::Bool __qmljs_cmp_le(const QV4::ValueRef l, const QV4::ValueRef r); QV4::Bool __qmljs_cmp_eq(const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_ne(const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_se(const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_sne(const QV4::ValueRef left, const QV4::ValueRef right); typedef QV4::Bool (*CmpOpContext)(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); QV4::Bool __qmljs_cmp_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); inline ReturnedValue __qmljs_to_primitive(const QV4::ValueRef value, int typeHint) { QV4::Object *o = value->asObject(); if (!o) return value.asReturnedValue(); return __qmljs_object_default_value(o, typeHint); } inline double __qmljs_to_number(const ValueRef value) { return value->toNumber(); } inline QV4::ReturnedValue __qmljs_uplus(const QV4::ValueRef value) { ; if (value->isNumber()) return value.asReturnedValue(); if (value->integerCompatible()) return Encode(value->int_32); double n = value->toNumberImpl(); return Encode(n); } inline QV4::ReturnedValue __qmljs_uminus(const QV4::ValueRef value) { ; if (value->isInteger() && value->integerValue()) return Encode(-value->integerValue()); else { double n = __qmljs_to_number(value); return Encode(-n); } } inline QV4::ReturnedValue __qmljs_compl(const QV4::ValueRef value) { ; int n; if (value->integerCompatible()) n = value->int_32; else n = value->toInt32(); return Encode((int)~n); } inline QV4::ReturnedValue __qmljs_not(const QV4::ValueRef value) { ; bool b = value->toBoolean(); return Encode(!b); } inline ReturnedValue __qmljs_bit_or(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return Encode(left->integerValue() | right->integerValue()); int lval = left->toInt32(); int rval = right->toInt32(); return Encode(lval | rval); } inline ReturnedValue __qmljs_bit_xor(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return Encode(left->integerValue() ^ right->integerValue()); int lval = left->toInt32(); int rval = right->toInt32(); return Encode(lval ^ rval); } inline ReturnedValue __qmljs_bit_and(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return Encode(left->integerValue() & right->integerValue()); int lval = left->toInt32(); int rval = right->toInt32(); return Encode(lval & rval); } inline QV4::ReturnedValue __qmljs_add(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return add_int32(left->integerValue(), right->integerValue()).asReturnedValue(); if (QV4::Value::bothDouble(*left, *right)) return QV4::Primitive::fromDouble(left->doubleValue() + right->doubleValue()).asReturnedValue(); return __qmljs_add_helper(ctx, left, right); } inline QV4::ReturnedValue __qmljs_sub(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return sub_int32(left->integerValue(), right->integerValue()).asReturnedValue(); double lval = __qmljs_to_number(left); double rval = __qmljs_to_number(right); return QV4::Primitive::fromDouble(lval - rval).asReturnedValue(); } inline QV4::ReturnedValue __qmljs_mul(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return mul_int32(left->integerValue(), right->integerValue()).asReturnedValue(); double lval = __qmljs_to_number(left); double rval = __qmljs_to_number(right); return QV4::Primitive::fromDouble(lval * rval).asReturnedValue(); } inline QV4::ReturnedValue __qmljs_div(const QV4::ValueRef left, const QV4::ValueRef right) { ; double lval = __qmljs_to_number(left); double rval = __qmljs_to_number(right); return QV4::Primitive::fromDouble(lval / rval).asReturnedValue(); } inline QV4::ReturnedValue __qmljs_mod(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right) && right->integerValue() != 0) { int intRes = left->integerValue() % right->integerValue(); if (intRes != 0 || left->integerValue() >= 0) return Encode(intRes); } double lval = __qmljs_to_number(left); double rval = __qmljs_to_number(right); return QV4::Primitive::fromDouble(std::fmod(lval, rval)).asReturnedValue(); } inline QV4::ReturnedValue __qmljs_shl(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return Encode((int)(left->integerValue() << ((uint(right->integerValue()) & 0x1f)))); int lval = left->toInt32(); unsigned rval = right->toUInt32() & 0x1f; return Encode((int)(lval << rval)); } inline QV4::ReturnedValue __qmljs_shr(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (QV4::Value::integerCompatible(*left, *right)) return Encode((int)(left->integerValue() >> ((uint(right->integerValue()) & 0x1f)))); int lval = left->toInt32(); unsigned rval = right->toUInt32() & 0x1f; return Encode((int)(lval >> rval)); } inline QV4::ReturnedValue __qmljs_ushr(const QV4::ValueRef left, const QV4::ValueRef right) { ; uint res; if (QV4::Value::integerCompatible(*left, *right)) { res = uint(left->integerValue()) >> (uint(right->integerValue()) & 0x1f); } else { unsigned lval = left->toUInt32(); unsigned rval = right->toUInt32() & 0x1f; res = lval >> rval; } return Encode(res); } inline QV4::ReturnedValue __qmljs_gt(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_cmp_gt(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_lt(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_cmp_lt(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_ge(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_cmp_ge(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_le(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_cmp_le(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_eq(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_cmp_eq(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_ne(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = !__qmljs_cmp_eq(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_se(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = __qmljs_strict_equal(left, right); return Encode(r); } inline QV4::ReturnedValue __qmljs_sne(const QV4::ValueRef left, const QV4::ValueRef right) { ; bool r = ! __qmljs_strict_equal(left, right); return Encode(r); } inline QV4::Bool __qmljs_cmp_eq(const QV4::ValueRef left, const QV4::ValueRef right) { ; if (left->rawValue() == right->rawValue()) return !left->isNaN(); if (left->type() == right->type()) { if (!left->isManaged()) return false; if (left->isString() == right->isString()) return left->managed()->isEqualTo(right->managed()); } return __qmljs_equal_helper(left, right); } inline QV4::Bool __qmljs_cmp_ne(const QV4::ValueRef left, const QV4::ValueRef right) { ; return !__qmljs_cmp_eq(left, right); } inline QV4::Bool __qmljs_cmp_se(const QV4::ValueRef left, const QV4::ValueRef right) { ; return __qmljs_strict_equal(left, right); } inline QV4::Bool __qmljs_cmp_sne(const QV4::ValueRef left, const QV4::ValueRef right) { ; return ! __qmljs_strict_equal(left, right); } inline QV4::Bool __qmljs_cmp_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) { ; Scope scope(ctx); QV4::ScopedValue v(scope, __qmljs_instanceof(ctx, left, right)); return v->booleanValue(); } inline uint __qmljs_cmp_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) { ; Scope scope(ctx); QV4::ScopedValue v(scope, __qmljs_in(ctx, left, right)); return v->booleanValue(); } } # 46 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4sparsearray_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmap.h" 1 # 47 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4sparsearray_p.h" 2 # 1 "/usr/include/assert.h" 1 3 # 63 "/usr/include/assert.h" 3 extern "C" { extern void __assert_fail (const char *__assertion, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) throw () __attribute__ ((__noreturn__)); } # 96 "/usr/include/assert.h" 3 # 111 "/usr/include/assert.h" 3 # 51 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4sparsearray_p.h" 2 namespace QV4 { struct SparseArray; class ArrayElementLessThan { public: inline ArrayElementLessThan(ExecutionContext *context, ObjectRef thisObject, const ValueRef comparefn) : m_context(context), thisObject(thisObject), m_comparefn(comparefn) {} bool operator()(const Property &v1, const Property &v2) const; private: ExecutionContext *m_context; ObjectRef thisObject; const ValueRef m_comparefn; }; struct SparseArrayNode { quintptr p; SparseArrayNode *left; SparseArrayNode *right; uint size_left; uint value; enum Color { Red = 0, Black = 1 }; enum { Mask = 3 }; const SparseArrayNode *nextNode() const; SparseArrayNode *nextNode() { return const_cast(const_cast(this)->nextNode()); } const SparseArrayNode *previousNode() const; SparseArrayNode *previousNode() { return const_cast(const_cast(this)->previousNode()); } Color color() const { return Color(p & 1); } void setColor(Color c) { if (c == Black) p |= Black; else p &= ~Black; } SparseArrayNode *parent() const { return reinterpret_cast(p & ~Mask); } void setParent(SparseArrayNode *pp) { p = (p & Mask) | quintptr(pp); } uint key() const { uint k = size_left; const SparseArrayNode *n = this; while (SparseArrayNode *p = n->parent()) { if (p && p->right == n) k += p->size_left; n = p; } return k; } SparseArrayNode *copy(SparseArray *d) const; SparseArrayNode *lowerBound(uint key); SparseArrayNode *upperBound(uint key); }; inline SparseArrayNode *SparseArrayNode::lowerBound(uint akey) { SparseArrayNode *n = this; SparseArrayNode *last = 0; while (n) { if (akey <= n->size_left) { last = n; n = n->left; } else { akey -= n->size_left; n = n->right; } } return last; } inline SparseArrayNode *SparseArrayNode::upperBound(uint akey) { SparseArrayNode *n = this; SparseArrayNode *last = 0; while (n) { if (akey < n->size_left) { last = n; n = n->left; } else { akey -= n->size_left; n = n->right; } } return last; } struct __attribute__((visibility("default"))) SparseArray { SparseArray(); ~SparseArray() { if (root()) freeTree(header.left, __alignof__(SparseArrayNode)); } SparseArray(const SparseArray &other); private: SparseArray &operator=(const SparseArray &other); int numEntries; SparseArrayNode header; SparseArrayNode *mostLeftNode; void rotateLeft(SparseArrayNode *x); void rotateRight(SparseArrayNode *x); void rebalance(SparseArrayNode *x); void recalcMostLeftNode(); SparseArrayNode *root() const { return header.left; } void deleteNode(SparseArrayNode *z); public: SparseArrayNode *createNode(uint sl, SparseArrayNode *parent, bool left); void freeTree(SparseArrayNode *root, int alignment); SparseArrayNode *findNode(uint akey) const; uint pop_front(); void push_front(uint at); uint pop_back(uint len); void push_back(uint at, uint len); QList keys() const; const SparseArrayNode *end() const { return &header; } SparseArrayNode *end() { return &header; } const SparseArrayNode *begin() const { if (root()) return mostLeftNode; return end(); } SparseArrayNode *begin() { if (root()) return mostLeftNode; return end(); } SparseArrayNode *erase(SparseArrayNode *n); SparseArrayNode *lowerBound(uint key); const SparseArrayNode *lowerBound(uint key) const; SparseArrayNode *upperBound(uint key); const SparseArrayNode *upperBound(uint key) const; SparseArrayNode *insert(uint akey); typedef uint key_type; typedef int mapped_type; typedef qptrdiff difference_type; typedef int size_type; }; inline SparseArrayNode *SparseArray::findNode(uint akey) const { SparseArrayNode *n = root(); while (n) { if (akey == n->size_left) { return n; } else if (akey < n->size_left) { n = n->left; } else { akey -= n->size_left; n = n->right; } } return 0; } inline uint SparseArray::pop_front() { uint idx = (2147483647 * 2U + 1U) ; SparseArrayNode *n = findNode(0); if (n) { idx = n->value; deleteNode(n); SparseArrayNode *n = root(); while (n) { n->size_left -= 1; n = n->left; } } return idx; } inline void SparseArray::push_front(uint value) { SparseArrayNode *n = root(); while (n) { n->size_left += 1; n = n->left; } n = insert(0); n->value = value; } inline uint SparseArray::pop_back(uint len) { uint idx = (2147483647 * 2U + 1U); if (!len) return idx; SparseArrayNode *n = findNode(len - 1); if (n) { idx = n->value; deleteNode(n); } return idx; } inline void SparseArray::push_back(uint index, uint len) { SparseArrayNode *n = insert(len); n->value = index; } # 305 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4sparsearray_p.h" inline SparseArrayNode *SparseArray::erase(SparseArrayNode *n) { if (n == end()) return n; SparseArrayNode *next = n->nextNode(); deleteNode(n); return next; } inline QList SparseArray::keys() const { QList res; res.reserve(numEntries); SparseArrayNode *n = mostLeftNode; while (n != end()) { res.append(n->key()); n = n->nextNode(); } return res; } inline const SparseArrayNode *SparseArray::lowerBound(uint akey) const { const SparseArrayNode *lb = root()->lowerBound(akey); if (!lb) lb = end(); return lb; } inline SparseArrayNode *SparseArray::lowerBound(uint akey) { SparseArrayNode *lb = root()->lowerBound(akey); if (!lb) lb = end(); return lb; } inline const SparseArrayNode *SparseArray::upperBound(uint akey) const { const SparseArrayNode *ub = root()->upperBound(akey); if (!ub) ub = end(); return ub; } inline SparseArrayNode *SparseArray::upperBound(uint akey) { SparseArrayNode *ub = root()->upperBound(akey); if (!ub) ub = end(); return ub; } } # 53 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 55 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 56 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QScopedPointer" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QScopedPointer" 2 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 # 1 "/usr/include/c++/4.8/cstdio" 1 3 # 40 "/usr/include/c++/4.8/cstdio" 3 3 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 # 1 "/usr/include/c++/4.8/cassert" 1 3 # 42 "/usr/include/c++/4.8/cassert" 3 3 # 1 "/usr/include/assert.h" 1 3 # 63 "/usr/include/assert.h" 3 extern "C" { extern void __assert_fail (const char *__assertion, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) throw () __attribute__ ((__noreturn__)); } # 96 "/usr/include/assert.h" 3 # 111 "/usr/include/assert.h" 3 # 44 "/usr/include/c++/4.8/cassert" 2 3 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h" 2 namespace QV4 { struct Function; struct Lookup; struct Object; struct ObjectIterator; struct BooleanObject; struct NumberObject; struct StringObject; struct ArrayObject; struct DateObject; struct FunctionObject; struct RegExpObject; struct ErrorObject; struct ArgumentsObject; struct ExecutionContext; struct CallContext; struct ExecutionEngine; class MemoryManager; struct ObjectPrototype; struct StringPrototype; struct NumberPrototype; struct BooleanPrototype; struct ArrayPrototype; struct FunctionPrototype; struct DatePrototype; struct RegExpPrototype; struct ErrorPrototype; struct EvalErrorPrototype; struct RangeErrorPrototype; struct ReferenceErrorPrototype; struct SyntaxErrorPrototype; struct TypeErrorPrototype; struct URIErrorPrototype; struct __attribute__((visibility("default"))) Object: Managed { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } uint memberDataAlloc; Property *memberData; union { uint arrayFreeList; uint arrayOffset; }; uint arrayDataLen; uint arrayAlloc; PropertyAttributes *arrayAttributes; Property *arrayData; SparseArray *sparseArray; enum { InlinePropertySize = 4 }; Property inlineProperties[InlinePropertySize]; Object(ExecutionEngine *engine); Object(InternalClass *internalClass); ~Object(); Object *prototype() const { return internalClass->prototype; } bool setPrototype(Object *proto); Property *__getOwnProperty__(const StringRef name, PropertyAttributes *attrs = 0); Property *__getOwnProperty__(uint index, PropertyAttributes *attrs = 0); Property *__getPropertyDescriptor__(const StringRef name, PropertyAttributes *attrs = 0) const; Property *__getPropertyDescriptor__(uint index, PropertyAttributes *attrs = 0) const; bool __hasProperty__(const StringRef name) const; bool __hasProperty__(uint index) const; bool __defineOwnProperty__(ExecutionContext *ctx, Property *current, const StringRef member, const Property &p, PropertyAttributes attrs); bool __defineOwnProperty__(ExecutionContext *ctx, const StringRef name, const Property &p, PropertyAttributes attrs); bool __defineOwnProperty__(ExecutionContext *ctx, uint index, const Property &p, PropertyAttributes attrs); bool __defineOwnProperty__(ExecutionContext *ctx, const QString &name, const Property &p, PropertyAttributes attrs); void put(ExecutionContext *ctx, const QString &name, const ValueRef value); static ReturnedValue getValue(const ValueRef thisObject, const Property *p, PropertyAttributes attrs); ReturnedValue getValue(const Property *p, PropertyAttributes attrs) const { Scope scope(this->engine()); ScopedValue t(scope, const_cast(this)); return getValue(t, p, attrs); } void putValue(Property *pd, PropertyAttributes attrs, const ValueRef value); void defineDefaultProperty(const StringRef name, ValueRef value); void defineDefaultProperty(const QString &name, ValueRef value); void defineDefaultProperty(const QString &name, ReturnedValue (*code)(CallContext *), int argumentCount = 0); void defineDefaultProperty(const StringRef name, ReturnedValue (*code)(CallContext *), int argumentCount = 0); void defineAccessorProperty(const QString &name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)); void defineAccessorProperty(const StringRef name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)); void defineReadonlyProperty(const QString &name, ValueRef value); void defineReadonlyProperty(const StringRef name, ValueRef value); Property *insertMember(const StringRef s, PropertyAttributes attributes); inline ExecutionEngine *engine() const { return internalClass->engine; } uint allocArrayValue() { uint idx = arrayFreeList; if (arrayAlloc <= arrayFreeList) arrayReserve(arrayAlloc + 1); arrayFreeList = arrayData[arrayFreeList].value.uint_32; if (arrayAttributes) arrayAttributes[idx].setType(PropertyAttributes::Data); return idx; } uint allocArrayValue(const ValueRef v) { uint idx = allocArrayValue(); Property *pd = &arrayData[idx]; pd->value = *v; return idx; } void freeArrayValue(int idx) { Property &pd = arrayData[idx]; pd.value.tag = Value::Empty_Type; pd.value.int_32 = arrayFreeList; arrayFreeList = idx; if (arrayAttributes) arrayAttributes[idx].clear(); } void getArrayHeadRoom() { ((!sparseArray && !arrayOffset) ? static_cast (0) : __assert_fail ("!sparseArray && !arrayOffset", "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h", 201, __PRETTY_FUNCTION__)); arrayOffset = qMax(arrayDataLen >> 2, (uint)16); Property *newArray = new Property[arrayOffset + arrayAlloc]; memcpy(newArray + arrayOffset, arrayData, arrayDataLen*sizeof(Property)); delete [] arrayData; arrayData = newArray + arrayOffset; if (arrayAttributes) { PropertyAttributes *newAttrs = new PropertyAttributes[arrayOffset + arrayAlloc]; memcpy(newAttrs + arrayOffset, arrayAttributes, arrayDataLen*sizeof(PropertyAttributes)); delete [] arrayAttributes; arrayAttributes = newAttrs + arrayOffset; } } public: void copyArrayData(Object *other); void initSparse(); uint arrayLength() const; bool setArrayLength(uint newLen); void setArrayLengthUnchecked(uint l); Property *arrayInsert(uint index, PropertyAttributes attributes = Attr_Data); void arraySet(uint index, const Property *pd); void arraySet(uint index, ValueRef value); uint propertyIndexFromArrayIndex(uint index) const { if (!sparseArray) { if (index >= arrayDataLen) return (2147483647 * 2U + 1U); return index; } else { SparseArrayNode *n = sparseArray->findNode(index); if (!n) return (2147483647 * 2U + 1U); return n->value; } } Property *arrayAt(uint index) const { uint pidx = propertyIndexFromArrayIndex(index); if (pidx == (2147483647 * 2U + 1U)) return 0; return arrayData + pidx; } Property *nonSparseArrayAt(uint index) const { if (sparseArray) return 0; if (index >= arrayDataLen) return 0; return arrayData + index; } void push_back(const ValueRef v); SparseArrayNode *sparseArrayBegin() { return sparseArray ? sparseArray->begin() : 0; } SparseArrayNode *sparseArrayEnd() { return sparseArray ? sparseArray->end() : 0; } void arrayConcat(const ArrayObject *other); void arraySort(ExecutionContext *context, ObjectRef thisObject, const ValueRef comparefn, uint arrayDataLen); ReturnedValue arrayIndexOf(const ValueRef v, uint fromIndex, uint arrayDataLen, ExecutionContext *ctx, Object *o); void arrayReserve(uint n); void ensureArrayAttributes(); inline bool protoHasArray() { Scope scope(engine()); Scoped p(scope, this); while ((p = p->prototype())) if (p->arrayDataLen) return true; return false; } void ensureMemberIndex(uint idx); inline ReturnedValue get(const StringRef name, bool *hasProperty = 0) { return vtbl->get(this, name, hasProperty); } inline ReturnedValue getIndexed(uint idx, bool *hasProperty = 0) { return vtbl->getIndexed(this, idx, hasProperty); } inline void put(const StringRef name, const ValueRef v) { vtbl->put(this, name, v); } inline void putIndexed(uint idx, const ValueRef v) { vtbl->putIndexed(this, idx, v); } using Managed::get; using Managed::getIndexed; using Managed::put; using Managed::putIndexed; using Managed::query; using Managed::queryIndexed; using Managed::deleteProperty; using Managed::deleteIndexedProperty; using Managed::getLookup; using Managed::setLookup; using Managed::advanceIterator; protected: static void destroy(Managed *that); static void markObjects(Managed *that, ExecutionEngine *e); static ReturnedValue get(Managed *m, const StringRef name, bool *hasProperty); static ReturnedValue getIndexed(Managed *m, uint index, bool *hasProperty); static void put(Managed *m, const StringRef name, const ValueRef value); static void putIndexed(Managed *m, uint index, const ValueRef value); static PropertyAttributes query(const Managed *m, StringRef name); static PropertyAttributes queryIndexed(const Managed *m, uint index); static bool deleteProperty(Managed *m, const StringRef name); static bool deleteIndexedProperty(Managed *m, uint index); static ReturnedValue getLookup(Managed *m, Lookup *l); static void setLookup(Managed *m, Lookup *l, const ValueRef v); static Property *advanceIterator(Managed *m, ObjectIterator *it, StringRef name, uint *index, PropertyAttributes *attributes); private: ReturnedValue internalGet(const StringRef name, bool *hasProperty); ReturnedValue internalGetIndexed(uint index, bool *hasProperty); void internalPut(const StringRef name, const ValueRef value); void internalPutIndexed(uint index, const ValueRef value); bool internalDeleteProperty(const StringRef name); bool internalDeleteIndexedProperty(uint index); friend struct ObjectIterator; friend struct ObjectPrototype; }; struct BooleanObject: Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } SafeValue value; BooleanObject(ExecutionEngine *engine, const ValueRef val) : Object(engine->booleanClass) { vtbl = &static_vtbl; type = Type_BooleanObject; value = val; } protected: BooleanObject(InternalClass *ic) : Object(ic) { vtbl = &static_vtbl; type = Type_BooleanObject; value = Encode(false); } }; struct NumberObject: Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } SafeValue value; NumberObject(ExecutionEngine *engine, const ValueRef val) : Object(engine->numberClass) { vtbl = &static_vtbl; type = Type_NumberObject; value = val; } protected: NumberObject(InternalClass *ic) : Object(ic) { vtbl = &static_vtbl; type = Type_NumberObject; value = Encode((int)0); } }; struct ArrayObject: Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } enum { LengthPropertyIndex = 0 }; ArrayObject(ExecutionEngine *engine) : Object(engine->arrayClass) { init(engine); } ArrayObject(ExecutionEngine *engine, const QStringList &list); ArrayObject(InternalClass *ic) : Object(ic) { init(ic->engine); } void init(ExecutionEngine *engine); QStringList toQStringList() const; }; inline uint Object::arrayLength() const { if (isArrayObject()) { if (memberData[ArrayObject::LengthPropertyIndex].value.isInteger()) return memberData[ArrayObject::LengthPropertyIndex].value.integerValue(); return Primitive::toUInt32(memberData[ArrayObject::LengthPropertyIndex].value.doubleValue()); } return 0; } inline void Object::setArrayLengthUnchecked(uint l) { if (isArrayObject()) { Property &lengthProperty = memberData[ArrayObject::LengthPropertyIndex]; lengthProperty.value = Primitive::fromUInt32(l); } } inline void Object::push_back(const ValueRef v) { uint idx = arrayLength(); if (!sparseArray) { if (idx >= arrayAlloc) arrayReserve(idx + 1); arrayData[idx].value = *v; arrayDataLen = idx + 1; } else { uint idx = allocArrayValue(v); sparseArray->push_back(idx, arrayLength()); } setArrayLengthUnchecked(idx + 1); } inline Property *Object::arrayInsert(uint index, PropertyAttributes attributes) { if (attributes.isAccessor()) hasAccessorProperty = 1; Property *pd; if (!sparseArray && (index < 0x1000 || index < arrayDataLen + (arrayDataLen >> 2))) { if (index >= arrayAlloc) arrayReserve(index + 1); if (index >= arrayDataLen) { for (uint i = arrayDataLen; i < index; ++i) { arrayData[i].value = Primitive::emptyValue(); if (arrayAttributes) arrayAttributes[i].clear(); } arrayDataLen = index + 1; } pd = arrayData + index; } else { initSparse(); SparseArrayNode *n = sparseArray->insert(index); if (n->value == (2147483647 * 2U + 1U)) n->value = allocArrayValue(); pd = arrayData + n->value; } if (index >= arrayLength()) setArrayLengthUnchecked(index + 1); if (arrayAttributes || attributes != Attr_Data) { if (!arrayAttributes) ensureArrayAttributes(); attributes.resolve(); arrayAttributes[pd - arrayData] = attributes; } return pd; } inline void Object::arraySet(uint index, ValueRef value) { Property *pd = arrayInsert(index); pd->value = *value; } inline void Object::arraySet(uint index, const Property *pd) { *arrayInsert(index) = *pd; } template<> inline Object *value_cast(const Value &v) { return v.asObject(); } template<> inline ArrayObject *value_cast(const Value &v) { return v.asArrayObject(); } template<> inline ReturnedValue value_convert(ExecutionContext *ctx, const Value &v) { return v.toObject(ctx)->asReturnedValue(); } } # 49 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4objectiterator_p.h" 1 namespace QV4 { struct SparseArrayNode; struct Object; struct ArrayObject; struct PropertyAttributes; struct ExecutionContext; struct Property; struct String; struct InternalClass; struct __attribute__((visibility("default"))) ObjectIterator { enum Flags { NoFlags = 0, EnumerableOnly = 0x1, WithProtoChain = 0x2, }; ObjectRef object; ObjectRef current; SparseArrayNode *arrayNode; uint arrayIndex; uint memberIndex; uint flags; Property tmpDynamicProperty; ObjectIterator(SafeObject *scratch1, SafeObject *scratch2, const ObjectRef o, uint flags); ObjectIterator(Scope &scope, const ObjectRef o, uint flags); Property *next(StringRef name, uint *index, PropertyAttributes *attributes = 0); ReturnedValue nextPropertyName(ValueRef value); ReturnedValue nextPropertyNameAsString(ValueRef value); ReturnedValue nextPropertyNameAsString(); }; struct ForEachIteratorObject: Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } ObjectIterator it; ForEachIteratorObject(ExecutionContext *ctx, const ObjectRef o) : Object(ctx->engine), it(workArea, workArea + 1, o, ObjectIterator::EnumerableOnly|ObjectIterator::WithProtoChain) { vtbl = &static_vtbl; type = Type_ForeachIteratorObject; } ReturnedValue nextPropertyName() { return it.nextPropertyNameAsString(); } protected: static void markObjects(Managed *that, ExecutionEngine *e); SafeObject workArea[2]; }; } # 53 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QString" 2 # 55 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qhash.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QHash" 2 # 56 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QScopedPointer" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qscopedpointer.h" 1 # 2 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/QScopedPointer" 2 # 57 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "/usr/include/c++/4.8/cstdio" 1 3 # 40 "/usr/include/c++/4.8/cstdio" 3 3 # 58 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 # 1 "/usr/include/c++/4.8/cassert" 1 3 # 42 "/usr/include/c++/4.8/cassert" 3 3 # 1 "/usr/include/assert.h" 1 3 # 63 "/usr/include/assert.h" 3 extern "C" { extern void __assert_fail (const char *__assertion, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert_perror_fail (int __errnum, const char *__file, unsigned int __line, const char *__function) throw () __attribute__ ((__noreturn__)); extern void __assert (const char *__assertion, const char *__file, int __line) throw () __attribute__ ((__noreturn__)); } # 96 "/usr/include/assert.h" 3 # 111 "/usr/include/assert.h" 3 # 44 "/usr/include/c++/4.8/cassert" 2 3 # 59 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h" 2 namespace QV4 { struct Function; struct Object; struct BooleanObject; struct NumberObject; struct StringObject; struct ArrayObject; struct DateObject; struct FunctionObject; struct ErrorObject; struct ArgumentsObject; struct ExecutionContext; struct ExecutionEngine; class MemoryManager; struct ObjectPrototype; struct StringPrototype; struct NumberPrototype; struct BooleanPrototype; struct ArrayPrototype; struct FunctionPrototype; struct DatePrototype; struct ErrorPrototype; struct EvalErrorPrototype; struct RangeErrorPrototype; struct ReferenceErrorPrototype; struct SyntaxErrorPrototype; struct TypeErrorPrototype; struct URIErrorPrototype; struct InternalClass; struct Lookup; struct __attribute__((visibility("default"))) FunctionObject: Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } enum FunctionType { RegularFunction = 0, WrappedQtMethod = 1 }; enum { Index_Prototype = 0, Index_ProtoConstructor = 0 }; ExecutionContext *scope; SafeString name; String * const *formalParameterList; String * const *varList; unsigned int formalParameterCount; unsigned int varCount; Function *function; FunctionObject(ExecutionContext *scope, const StringRef name, bool createProto = false); FunctionObject(ExecutionContext *scope, const QString &name = QString(), bool createProto = false); ~FunctionObject(); void init(const StringRef name, bool createProto); ReturnedValue newInstance(); static ReturnedValue construct(Managed *that, CallData *); static ReturnedValue call(Managed *that, CallData *d); inline ReturnedValue construct(CallData *callData) { return vtbl->construct(this, callData); } inline ReturnedValue call(CallData *callData) { return vtbl->call(this, callData); } static FunctionObject *cast(const Value &v) { return v.asFunctionObject(); } static FunctionObject *creatScriptFunction(ExecutionContext *scope, Function *function); protected: FunctionObject(InternalClass *ic); static void markObjects(Managed *that, ExecutionEngine *e); static bool hasInstance(Managed *that, const ValueRef value); static void destroy(Managed *that) { static_cast(that)->~FunctionObject(); } }; template<> inline FunctionObject *value_cast(const Value &v) { return v.asFunctionObject(); } struct FunctionCtor: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } FunctionCtor(ExecutionContext *scope); static ReturnedValue construct(Managed *that, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); }; struct FunctionPrototype: FunctionObject { FunctionPrototype(InternalClass *ic); void init(ExecutionEngine *engine, ObjectRef ctor); static ReturnedValue method_toString(CallContext *ctx); static ReturnedValue method_apply(CallContext *ctx); static ReturnedValue method_call(CallContext *ctx); static ReturnedValue method_bind(CallContext *ctx); }; struct BuiltinFunction: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } ReturnedValue (*code)(CallContext *); BuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)); static ReturnedValue construct(Managed *, CallData *); static ReturnedValue call(Managed *that, CallData *callData); }; struct IndexedBuiltinFunction: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } ReturnedValue (*code)(CallContext *ctx, uint index); uint index; IndexedBuiltinFunction(ExecutionContext *scope, uint index, ReturnedValue (*code)(CallContext *ctx, uint index)) : FunctionObject(scope) , code(code) , index(index) { vtbl = &static_vtbl; } static ReturnedValue construct(Managed *m, CallData *) { return m->engine()->current->throwTypeError(); } static ReturnedValue call(Managed *that, CallData *callData); }; struct ScriptFunction: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } ScriptFunction(ExecutionContext *scope, Function *function); static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); }; struct SimpleScriptFunction: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } SimpleScriptFunction(ExecutionContext *scope, Function *function); static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); }; struct BoundFunction: FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } FunctionObject *target; SafeValue boundThis; QVector boundArgs; BoundFunction(ExecutionContext *scope, FunctionObjectRef target, const ValueRef boundThis, const QVector &boundArgs); ~BoundFunction() {} static ReturnedValue construct(Managed *, CallData *d); static ReturnedValue call(Managed *that, CallData *dd); static void destroy(Managed *); static void markObjects(Managed *that, ExecutionEngine *e); static bool hasInstance(Managed *that, const ValueRef value); }; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4functionobject_p.h" 2 # 67 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h" 2 class QObject; class QQmlData; class QQmlPropertyCache; class QQmlPropertyData; namespace QV4 { struct QObjectSlotDispatcher; struct __attribute__((visibility("default"))) QObjectWrapper : public QV4::Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } enum RevisionMode { IgnoreRevision, CheckRevision }; static void initializeBindings(ExecutionEngine *engine); QObject *object() const { return m_object.data(); } ReturnedValue getQmlProperty(ExecutionContext *ctx, QQmlContextData *qmlContext, String *name, RevisionMode revisionMode, bool *hasProperty = 0, bool includeImports = false); static ReturnedValue getQmlProperty(ExecutionContext *ctx, QQmlContextData *qmlContext, QObject *object, String *name, RevisionMode revisionMode, bool *hasProperty = 0); static bool setQmlProperty(ExecutionContext *ctx, QQmlContextData *qmlContext, QObject *object, String *name, RevisionMode revisionMode, const ValueRef value); static ReturnedValue wrap(ExecutionEngine *engine, QObject *object); using Object::get; ReturnedValue getProperty(ExecutionContext *ctx, int propertyIndex, bool captureRequired); void setProperty(ExecutionContext *ctx, int propertyIndex, const ValueRef value); protected: static bool isEqualTo(Managed *that, Managed *o); private: ReturnedValue getProperty(ExecutionContext *ctx, QQmlPropertyData *property, bool captureRequired = true); static void setProperty(QObject *object, ExecutionContext *ctx, QQmlPropertyData *property, const ValueRef value); static ReturnedValue create(ExecutionEngine *engine, QQmlData *ddata, QObject *object); QObjectWrapper(ExecutionEngine *engine, QObject *object); QQmlPropertyData *findProperty(ExecutionEngine *engine, QQmlContextData *qmlContext, String *name, RevisionMode revisionMode, QQmlPropertyData *local) const; QPointer m_object; SafeString m_destroy; static ReturnedValue get(Managed *m, const StringRef name, bool *hasProperty); static void put(Managed *m, const StringRef name, const ValueRef value); static PropertyAttributes query(const Managed *, StringRef name); static Property *advanceIterator(Managed *m, ObjectIterator *it, StringRef name, uint *index, PropertyAttributes *attributes); static void markObjects(Managed *that, QV4::ExecutionEngine *e); static void collectDeletables(Managed *m, GCDeletable **deletable); static void destroy(Managed *that) { static_cast(that)->~QObjectWrapper(); } static ReturnedValue method_connect(CallContext *ctx); static ReturnedValue method_disconnect(CallContext *ctx); }; struct QObjectMethod : public QV4::FunctionObject { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } enum { DestroyMethod = -1, ToStringMethod = -2 }; static ReturnedValue create(QV4::ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal = Primitive::undefinedValue()); int methodIndex() const { return m_index; } QObject *object() const { return m_object.data(); } private: QObjectMethod(QV4::ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal); QV4::ReturnedValue method_toString(QV4::ExecutionContext *ctx); QV4::ReturnedValue method_destroy(QV4::ExecutionContext *ctx, const ValueRef args, int argc); QPointer m_object; int m_index; QV4::PersistentValue m_qmlGlobal; static ReturnedValue call(Managed *, CallData *callData); ReturnedValue callInternal(CallData *callData); static void destroy(Managed *that) { static_cast(that)->~QObjectMethod(); } }; struct QmlSignalHandler : public QV4::Object { public: template inline void qt_check_for_QMANAGED_macro(const T &_q_argument) const { int i = qYouForgotTheQ_MANAGED_Macro(this, &_q_argument); i = i + 1; } static const QV4::ManagedVTable static_vtbl; template QV4::Returned *asReturned() { return QV4::Returned ::create(this); } QmlSignalHandler(ExecutionEngine *engine, QObject *object, int signalIndex); int signalIndex() const { return m_signalIndex; } QObject *object() const { return m_object.data(); } private: QPointer m_object; int m_signalIndex; static void destroy(Managed *that) { static_cast(that)->~QmlSignalHandler(); } }; class MultiplyWrappedQObjectMap : public QObject, private QHash { public: template inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = 0, int n = -1) { return staticMetaObject . tr(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: static void qt_static_metacall(QObject *, QMetaObject::Call, int, void * *); struct QPrivateSignal {}; public: typedef QHash::ConstIterator ConstIterator; typedef QHash::Iterator Iterator; ConstIterator begin() const { return QHash::constBegin(); } Iterator begin() { return QHash::begin(); } ConstIterator end() const { return QHash::constEnd(); } Iterator end() { return QHash::end(); } void insert(QObject *key, Object *value); Object *value(QObject *key) const { return QHash::value(key, 0); } Iterator erase(Iterator it); void remove(QObject *key); private : void removeDestroyedObject(QObject*); }; } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4qobjectwrapper_p.h" 2 # 71 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4value_p.h" 1 # 72 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4object_p.h" 1 # 73 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 # 1 "../../include/QtQml/5.2.0/QtQml/private/qv4identifier_p.h" 1 # 1 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4identifier_p.h" 1 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qstring.h" 1 # 45 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/jsruntime/qv4identifier_p.h" 2 namespace QV4 { struct String; struct IdentifierTable; struct ExecutionEngine; struct Identifier { QString string; uint hashValue; }; struct IdentifierHashEntry { const Identifier *identifier; union { int value; void *pointer; }; int get(int *) const { return this ? value : -1; } bool get(bool *) const { return this != 0; } void *get(void **) const { return this ? pointer : 0; } }; struct IdentifierHashData { IdentifierHashData(int numBits); ~IdentifierHashData() { free(entries); } QBasicAtomicInt refCount; int alloc; int size; int numBits; IdentifierTable *identifierTable; IdentifierHashEntry *entries; }; struct IdentifierHashBase { IdentifierHashData *d; IdentifierHashBase() : d(0) {} IdentifierHashBase(ExecutionEngine *engine); inline IdentifierHashBase(const IdentifierHashBase &other); inline ~IdentifierHashBase(); inline IdentifierHashBase &operator=(const IdentifierHashBase &other); bool isEmpty() const { return !d; } void reserve(int) {} inline int count() const; bool contains(const Identifier *i) const; bool contains(const QString &str) const; bool contains(String *str) const; protected: IdentifierHashEntry *addEntry(const Identifier *i); const IdentifierHashEntry *lookup(const Identifier *identifier) const; const IdentifierHashEntry *lookup(const QString &str) const; const IdentifierHashEntry *lookup(String *str) const; const Identifier *toIdentifier(const QString &str) const; const Identifier *toIdentifier(String *str) const; }; template struct IdentifierHash : public IdentifierHashBase { IdentifierHash() : IdentifierHashBase() {} IdentifierHash(ExecutionEngine *engine) : IdentifierHashBase(engine) {} inline IdentifierHash(const IdentifierHash &other) : IdentifierHashBase(other) {} inline ~IdentifierHash() {} inline IdentifierHash &operator=(const IdentifierHash &other) { IdentifierHashBase::operator =(other); return *this; } void add(const QString &str, const T &value); inline T value(const QString &str) const; inline T value(String *str) const; QString findId(T value) const; }; inline IdentifierHashBase::IdentifierHashBase(const IdentifierHashBase &other) { d = other.d; if (d) d->refCount.ref(); } inline IdentifierHashBase::~IdentifierHashBase() { if (d && !d->refCount.deref()) delete d; } IdentifierHashBase &IdentifierHashBase::operator=(const IdentifierHashBase &other) { if (other.d) other.d->refCount.ref(); if (d && !d->refCount.deref()) delete d; d = other.d; return *this; } inline int IdentifierHashBase::count() const { return d ? d->size : 0; } inline bool IdentifierHashBase::contains(const Identifier *i) const { return lookup(i) != 0; } inline bool IdentifierHashBase::contains(const QString &str) const { return lookup(str) != 0; } inline bool IdentifierHashBase::contains(String *str) const { return lookup(str) != 0; } template void IdentifierHash::add(const QString &str, const T &value) { IdentifierHashEntry *e = addEntry(toIdentifier(str)); e->value = value; } template inline T IdentifierHash::value(const QString &str) const { return lookup(str)->get((T*)0); } template inline T IdentifierHash::value(String *str) const { return lookup(str)->get((T*)0); } template QString IdentifierHash::findId(T value) const { IdentifierHashEntry *e = d->entries; IdentifierHashEntry *end = e + d->alloc; while (e < end) { if (e->identifier && e->get((T*)0) == value) return e->identifier->string; ++e; } return QString(); } } # 2 "../../include/QtQml/5.2.0/QtQml/private/qv4identifier_p.h" 2 # 74 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" 2 namespace QV4 { struct ArrayObject; struct ExecutionEngine; } # 112 "../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h" class QV8Engine; class QQmlV4Function { public: int length() const { return callData->argc; } QV4::ReturnedValue operator[](int idx) { return (idx < callData->argc ? callData->args[idx].asReturnedValue() : QV4::Encode::undefined()); } QQmlContextData *context() { return ctx; } QV4::ReturnedValue qmlGlobal() { return callData->thisObject.asReturnedValue(); } void setReturnValue(QV4::ReturnedValue rv) { retVal = rv; } QV8Engine *engine() const { return e; } QV4::ExecutionEngine *v4engine() const; private: friend struct QV4::QObjectMethod; QQmlV4Function(); QQmlV4Function(const QQmlV4Function &); QQmlV4Function &operator=(const QQmlV4Function &); QQmlV4Function(QV4::CallData *callData, QV4::ValueRef retVal, const QV4::ValueRef global, QQmlContextData *c, QV8Engine *e) : callData(callData), retVal(retVal), ctx(c), e(e) { callData->thisObject.val = global.asReturnedValue(); } QV4::CallData *callData; QV4::ValueRef retVal; QQmlContextData *ctx; QV8Engine *e; }; class __attribute__((visibility("default"))) QQmlV4Handle { public: QQmlV4Handle() : d(QV4::Encode::undefined()) {} explicit QQmlV4Handle(QV4::ValueRef v) : d(v.asReturnedValue()) {} explicit QQmlV4Handle(QV4::ReturnedValue v) : d(v) {} operator QV4::ReturnedValue() const { return d; } private: quint64 d; }; class QObject; class QQmlEngine; class QQmlValueType; class QNetworkAccessManager; class QQmlContextData; class __attribute__((visibility("default"))) QV8Engine { friend class QJSEngine; typedef QSet V8ObjectSet; public: static QV8Engine* get(QJSEngine* q) { ((!(q)) ? qt_assert("q","../../include/QtQml/5.2.0/QtQml/private/../../../../../src/qml/qml/v8/qv8engine_p.h",178) : qt_noop()); return q->handle(); } static QV4::ExecutionEngine *getV4(QJSEngine *q) { return q->handle()->m_v4Engine; } static QV4::ExecutionEngine *getV4(QV8Engine *d) { return d->m_v4Engine; } QV8Engine(QJSEngine* qq); virtual ~QV8Engine(); enum ObjectOwnership { CppOwnership, JavaScriptOwnership }; struct Deletable { virtual ~Deletable() {} }; void initQmlGlobalObject(); void setEngine(QQmlEngine *engine); QQmlEngine *engine() { return m_engine; } QJSEngine *publicEngine() { return q; } QV4::ReturnedValue global(); void *xmlHttpRequestData() { return m_xmlHttpRequestData; } Deletable *listModelData() { return m_listModelData; } void setListModelData(Deletable *d) { if (m_listModelData) delete m_listModelData; m_listModelData = d; } QQmlContextData *callingContext(); void freezeObject(const QV4::ValueRef value); QVariant toVariant(const QV4::ValueRef value, int typeHint); QV4::ReturnedValue fromVariant(const QVariant &); QV4::ReturnedValue toString(const QString &string); virtual QNetworkAccessManager *networkAccessManager(); const QV4::IdentifierHash &illegalNames() const; void gc(); static QMutex *registrationMutex(); static int registerExtension(); inline Deletable *extensionData(int) const; void setExtensionData(int, Deletable *); QV4::ReturnedValue variantListToJS(const QVariantList &lst); inline QVariantList variantListFromJS(QV4::ArrayObjectRef array) { V8ObjectSet visitedObjects; return variantListFromJS(array, visitedObjects); } QV4::ReturnedValue variantMapToJS(const QVariantMap &vmap); inline QVariantMap variantMapFromJS(QV4::ObjectRef object) { V8ObjectSet visitedObjects; return variantMapFromJS(object, visitedObjects); } QV4::ReturnedValue variantToJS(const QVariant &value); inline QVariant variantFromJS(const QV4::ValueRef value) { V8ObjectSet visitedObjects; return variantFromJS(value, visitedObjects); } QV4::ReturnedValue metaTypeToJS(int type, const void *data); bool metaTypeFromJS(const QV4::ValueRef value, int type, void *data); bool convertToNativeQObject(const QV4::ValueRef value, const QByteArray &targetType, void **result); void startTimer(const QString &timerName); qint64 stopTimer(const QString &timerName, bool *wasRunning); int consoleCountHelper(const QString &file, quint16 line, quint16 column); QObject *qtObjectFromJS(const QV4::ValueRef value); protected: QJSEngine* q; QQmlEngine *m_engine; QV4::ExecutionEngine *m_v4Engine; QV4::PersistentValue m_freezeObject; void *m_xmlHttpRequestData; QVector m_extensionData; Deletable *m_listModelData; QV4::IdentifierHash m_illegalNames; QElapsedTimer m_time; QHash m_startedTimers; QHash m_consoleCount; QVariant toBasicVariant(const QV4::ValueRef); void initializeGlobal(); private: QVariantList variantListFromJS(QV4::ArrayObjectRef array, V8ObjectSet &visitedObjects); QVariantMap variantMapFromJS(QV4::ObjectRef object, V8ObjectSet &visitedObjects); QVariant variantFromJS(const QV4::ValueRef value, V8ObjectSet &visitedObjects); QV8Engine(const QV8Engine &) = delete; QV8Engine &operator=(const QV8Engine &) = delete; }; inline QV8Engine::Deletable *QV8Engine::extensionData(int index) const { if (index < m_extensionData.count()) return m_extensionData[index]; else return 0; } inline QV4::ExecutionEngine *QQmlV4Function::v4engine() const { return QV8Engine::getV4(e); } template < > struct QMetaTypeId< QQmlV4Handle > { 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< QQmlV4Handle >("QQmlV4Handle", reinterpret_cast< QQmlV4Handle * >(quintptr(-1))); metatype_id . storeRelease(newId); return newId; } }; # 2 "../../include/QtQml/5.2.0/QtQml/private/qv8engine_p.h" 2 # 50 ".moc/../qml/qqmllocale_p.h" 2 class QQmlDateExtension { public: static void registerExtension(QV4::ExecutionEngine *engine); private: static QV4::ReturnedValue method_toLocaleString(QV4::CallContext *ctx); static QV4::ReturnedValue method_toLocaleTimeString(QV4::CallContext *ctx); static QV4::ReturnedValue method_toLocaleDateString(QV4::CallContext *ctx); static QV4::ReturnedValue method_fromLocaleString(QV4::CallContext *ctx); static QV4::ReturnedValue method_fromLocaleTimeString(QV4::CallContext *ctx); static QV4::ReturnedValue method_fromLocaleDateString(QV4::CallContext *ctx); static QV4::ReturnedValue method_timeZoneUpdated(QV4::CallContext *ctx); }; class QQmlNumberExtension { public: static void registerExtension(QV4::ExecutionEngine *engine); private: static QV4::ReturnedValue method_toLocaleString(QV4::CallContext *ctx); static QV4::ReturnedValue method_fromLocaleString(QV4::CallContext *ctx); static QV4::ReturnedValue method_toLocaleCurrencyString(QV4::CallContext *ctx); }; class QQmlLocale { public: static const QMetaObject staticMetaObject; private: public: ~QQmlLocale(); enum MeasurementSystem { MetricSystem = QLocale::MetricSystem, ImperialSystem = QLocale::ImperialSystem, ImperialUSSystem = QLocale::ImperialUSSystem, ImperialUKSystem = QLocale::ImperialUKSystem }; enum FormatType { LongFormat = QLocale::LongFormat, ShortFormat = QLocale::ShortFormat, NarrowFormat = QLocale::NarrowFormat }; enum CurrencySymbolFormat { CurrencyIsoCode = QLocale::CurrencyIsoCode, CurrencySymbol = QLocale::CurrencySymbol, CurrencyDisplayName = QLocale::CurrencyDisplayName }; enum DayOfWeek { Sunday = 0, Monday = Qt::Monday, Tuesday = Qt::Tuesday, Wednesday = Qt::Wednesday, Thursday = Qt::Thursday, Friday = Qt::Friday, Saturday = Qt::Saturday }; static QV4::ReturnedValue locale(QV8Engine *v8engine, const QString &lang); static void registerStringLocaleCompare(QV4::ExecutionEngine *engine); private: QQmlLocale(); static QV4::ReturnedValue method_localeCompare(QV4::CallContext *ctx); }; # 10 ".moc/moc_qqmllocale_p.cpp" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qbytearray.h" 1 # 11 ".moc/moc_qqmllocale_p.cpp" 2 # 1 "/usr/local/temp/qt-everywhere-opensource-src-5.2.0/qtbase/include/QtCore/qmetatype.h" 1 # 12 ".moc/moc_qqmllocale_p.cpp" 2 # 19 ".moc/moc_qqmllocale_p.cpp" struct qt_meta_stringdata_QQmlLocale_t { QByteArrayData data[22]; char stringdata[278]; }; static const qt_meta_stringdata_QQmlLocale_t qt_meta_stringdata_QQmlLocale = { { { { { (-1) } }, 10, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 0 - 0 * sizeof(QByteArrayData) }, { { { (-1) } }, 17, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 11 - 1 * sizeof(QByteArrayData) }, { { { (-1) } }, 12, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 29 - 2 * sizeof(QByteArrayData) }, { { { (-1) } }, 14, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 42 - 3 * sizeof(QByteArrayData) }, { { { (-1) } }, 16, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 57 - 4 * sizeof(QByteArrayData) }, { { { (-1) } }, 16, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 74 - 5 * sizeof(QByteArrayData) }, { { { (-1) } }, 10, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 91 - 6 * sizeof(QByteArrayData) }, { { { (-1) } }, 10, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 102 - 7 * sizeof(QByteArrayData) }, { { { (-1) } }, 11, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 113 - 8 * sizeof(QByteArrayData) }, { { { (-1) } }, 12, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 125 - 9 * sizeof(QByteArrayData) }, { { { (-1) } }, 20, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 138 - 10 * sizeof(QByteArrayData) }, { { { (-1) } }, 15, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 159 - 11 * sizeof(QByteArrayData) }, { { { (-1) } }, 14, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 175 - 12 * sizeof(QByteArrayData) }, { { { (-1) } }, 19, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 190 - 13 * sizeof(QByteArrayData) }, { { { (-1) } }, 9, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 210 - 14 * sizeof(QByteArrayData) }, { { { (-1) } }, 6, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 220 - 15 * sizeof(QByteArrayData) }, { { { (-1) } }, 6, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 227 - 16 * sizeof(QByteArrayData) }, { { { (-1) } }, 7, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 234 - 17 * sizeof(QByteArrayData) }, { { { (-1) } }, 9, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 242 - 18 * sizeof(QByteArrayData) }, { { { (-1) } }, 8, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 252 - 19 * sizeof(QByteArrayData) }, { { { (-1) } }, 6, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 261 - 20 * sizeof(QByteArrayData) }, { { { (-1) } }, 8, 0, 0, __builtin_offsetof (qt_meta_stringdata_QQmlLocale_t, stringdata) + 268 - 21 * sizeof(QByteArrayData) } }, "QQmlLocale\0MeasurementSystem\0MetricSystem\0" "ImperialSystem\0ImperialUSSystem\0" "ImperialUKSystem\0FormatType\0LongFormat\0" "ShortFormat\0NarrowFormat\0CurrencySymbolFormat\0" "CurrencyIsoCode\0CurrencySymbol\0" "CurrencyDisplayName\0DayOfWeek\0Sunday\0" "Monday\0Tuesday\0Wednesday\0Thursday\0" "Friday\0Saturday\0" }; static const uint qt_meta_data_QQmlLocale[] = { 7, 0, 0, 0, 0, 0, 0, 0, 4, 14, 0, 0, 0, 0, 1, 0x0, 4, 30, 6, 0x0, 3, 38, 10, 0x0, 3, 44, 14, 0x0, 7, 50, 2, uint(QQmlLocale::MetricSystem), 3, uint(QQmlLocale::ImperialSystem), 4, uint(QQmlLocale::ImperialUSSystem), 5, uint(QQmlLocale::ImperialUKSystem), 7, uint(QQmlLocale::LongFormat), 8, uint(QQmlLocale::ShortFormat), 9, uint(QQmlLocale::NarrowFormat), 11, uint(QQmlLocale::CurrencyIsoCode), 12, uint(QQmlLocale::CurrencySymbol), 13, uint(QQmlLocale::CurrencyDisplayName), 15, uint(QQmlLocale::Sunday), 16, uint(QQmlLocale::Monday), 17, uint(QQmlLocale::Tuesday), 18, uint(QQmlLocale::Wednesday), 19, uint(QQmlLocale::Thursday), 20, uint(QQmlLocale::Friday), 21, uint(QQmlLocale::Saturday), 0 }; const QMetaObject QQmlLocale::staticMetaObject = { { 0, qt_meta_stringdata_QQmlLocale.data, qt_meta_data_QQmlLocale, 0, 0, 0} };